{"version":3,"file":"static/js/main.44b2dd2c.js","mappings":"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ACA,aACA,UACA,WACA,SACA,QACA,UACA,SACA,QACA,WACA,QACA,QACA,WACA,YACA,UACA,SACA,aACA,YACA,cACA,cACA,QACA,SACA,OACA,OACA,WACA,SACA,QACA,UACA,aACA,SACA,SACA,UACA,UACA,OACA,QACA,YACA,YACA,aACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,SACA,QACA,QACA,SACA,QACA,UACA,YACA,aACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,WACA,WACA,WACA,YACA,cACA,WACA,UACA,OAGI/hO,GAAQ,CACZ,YACA,QACA,UACA,YACA,SACA,aACA,cACA,YACA,SACA,UACA,SACA,SACA,UACA,SACA,QACA,SACA,OACA,OACA,SACA,WACA,QACA,YACA,YACA,OACA,QACA,OACA,OACA,SACA,OACA,cACA,WACA,QACA,OACA,UACA,SACA,SACA,aACA,SACA,OACA,gBACA,YACA,WACA,aACA,YACA,QACA,QACA,SACA,SACA,OACA,OACA,SACA,QACA,SACA,UACA,UACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,WACA,WACA,UACA,QACA,QACA,YACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,WACA,YACA,aACA,SACA,UACA,QACA,UACA,eACA,QACA,WACA,UACA,UACA,UACA,aACA,UACA,WACA,QACA,YACA,UACA,aACA,SACA,SACA,QACA,UACA,WACA,UACA,OACA,UACA,WACA,SACA,UACA,SACA,QACA,QACA,UACA,OACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,aACA,UACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,aACA,SACA,WACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,aACA,UACA,SACA,UACA,SACA,YACA,UACA,WACA,SACA,UACA,aACA,aACA,QACA,QACA,UACA,QACA,SACA,OA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","sources":["../node_modules/@hypnosphi/create-react-context/lib/implementation.js","../node_modules/@hypnosphi/create-react-context/lib/index.js","../node_modules/@hypnosphi/create-react-context/node_modules/warning/warning.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/deep-equal/index.js","../node_modules/define-data-property/index.js","../node_modules/define-properties/index.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/events/events.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/functions-have-names/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/gud/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../../../../webpack/universalModuleDefinition","../../../../highcharts-react.min.js","../../../../webpack/bootstrap c411af7e3e35a8596495","../../../../src/HighchartsReact.js","../../../../external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","../../../../external {\"root\":\"Highcharts\",\"commonjs\":\"highcharts\",\"commonjs2\":\"highcharts\",\"amd\":\"highcharts\"}","../node_modules/highcharts/highcharts.src.js","../node_modules/highcharts/highstock.src.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/humanize-duration/humanize-duration.js","../node_modules/is-arguments/index.js","../node_modules/is-date-object/index.js","../node_modules/is-regex/index.js","../node_modules/isarray/index.js","../node_modules/jszip/dist/jszip.min.js","../node_modules/object-is/implementation.js","../node_modules/object-is/index.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/path-to-regexp/index.js","../node_modules/prismjs/components/prism-c.js","../node_modules/prismjs/components/prism-cpp.js","../node_modules/prismjs/components/prism-java.js","../node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js","../node_modules/prismjs/prism.js","../node_modules/promise-memoize/index.js","../node_modules/promise-memoize/lib/memoize.js","../node_modules/promise-memoize/lib/resolver.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/Prompt.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/reactstrap/node_modules/react-transition-group/CSSTransition.js","../node_modules/reactstrap/node_modules/react-transition-group/ReplaceTransition.js","../node_modules/reactstrap/node_modules/react-transition-group/Transition.js","../node_modules/reactstrap/node_modules/react-transition-group/TransitionGroup.js","../node_modules/reactstrap/node_modules/react-transition-group/TransitionGroupContext.js","../node_modules/reactstrap/node_modules/react-transition-group/index.js","../node_modules/reactstrap/node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/reactstrap/node_modules/react-transition-group/utils/PropTypes.js","../node_modules/reactstrap/node_modules/warning/warning.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/set-function-name/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.cjs.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../node_modules/@fortawesome/fontawesome-svg-core/index.es.js","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/reactstrap/es/utils.js","../node_modules/reactstrap/es/Portal.js","../node_modules/reactstrap/es/Fade.js","../node_modules/reactstrap/es/Modal.js","../node_modules/reactstrap/es/ModalHeader.js","../node_modules/reactstrap/es/ModalBody.js","../node_modules/reactstrap/es/ModalFooter.js","../node_modules/reactstrap/es/Button.js","../node_modules/reactstrap/es/InputGroup.js","../node_modules/reactstrap/es/InputGroupText.js","../node_modules/reactstrap/es/InputGroupAddon.js","../node_modules/reactstrap/es/Input.js","../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/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/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.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/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.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/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","services/helpers.js","services/LocalStorageService.js","services/ApiServices/ApiConstants.js","services/ApiServices/AuthentificationServices.js","components/UserSettingsModal/MailSettings.js","components/UserSettingsModal/PasswordSettings.js","components/UserSettingsModal/UserNameSettings.js","components/UserSettingsModal/DeleteUser.js","components/UserSettingsModal/UserSettingsProvider.js","components/UserSettingsModal/UserSettingsModal.js","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","../node_modules/@fortawesome/free-brands-svg-icons/index.es.js","../node_modules/reactstrap/es/NavbarBrand.js","logo.svg","components/EdgeMLBrandLogo/EdgeMLBrandLogo.js","../node_modules/reactstrap/es/Spinner.js","services/ApiServices/DatasetServices.js","services/DatasetService.js","components/NotificationHandler/NotificationProvider.js","components/Common/EdgeMLTable/index.js","components/NotificationHandler/index.js","components/Common/logos.js","../node_modules/popper.js/src/utils/isBrowser.js","../node_modules/popper.js/src/utils/debounce.js","../node_modules/popper.js/src/utils/isFunction.js","../node_modules/popper.js/src/utils/getStyleComputedProperty.js","../node_modules/popper.js/src/utils/getParentNode.js","../node_modules/popper.js/src/utils/getScrollParent.js","../node_modules/popper.js/src/utils/getReferenceNode.js","../node_modules/popper.js/src/utils/isIE.js","../node_modules/popper.js/src/utils/getOffsetParent.js","../node_modules/popper.js/src/utils/getRoot.js","../node_modules/popper.js/src/utils/findCommonOffsetParent.js","../node_modules/popper.js/src/utils/isOffsetContainer.js","../node_modules/popper.js/src/utils/getScroll.js","../node_modules/popper.js/src/utils/getBordersSize.js","../node_modules/popper.js/src/utils/getWindowSizes.js","../node_modules/popper.js/src/utils/getClientRect.js","../node_modules/popper.js/src/utils/getBoundingClientRect.js","../node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","../node_modules/popper.js/src/utils/includeScroll.js","../node_modules/popper.js/src/utils/isFixed.js","../node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","../node_modules/popper.js/src/utils/getBoundaries.js","../node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../node_modules/popper.js/src/utils/computeAutoPlacement.js","../node_modules/popper.js/src/utils/getReferenceOffsets.js","../node_modules/popper.js/src/utils/getOuterSizes.js","../node_modules/popper.js/src/utils/getOppositePlacement.js","../node_modules/popper.js/src/utils/getPopperOffsets.js","../node_modules/popper.js/src/utils/find.js","../node_modules/popper.js/src/utils/runModifiers.js","../node_modules/popper.js/src/utils/findIndex.js","../node_modules/popper.js/src/methods/update.js","../node_modules/popper.js/src/utils/isModifierEnabled.js","../node_modules/popper.js/src/utils/getSupportedPropertyName.js","../node_modules/popper.js/src/methods/destroy.js","../node_modules/popper.js/src/utils/getWindow.js","../node_modules/popper.js/src/utils/setupEventListeners.js","../node_modules/popper.js/src/methods/enableEventListeners.js","../node_modules/popper.js/src/methods/disableEventListeners.js","../node_modules/popper.js/src/utils/removeEventListeners.js","../node_modules/popper.js/src/utils/isNumeric.js","../node_modules/popper.js/src/utils/setStyles.js","../node_modules/popper.js/src/modifiers/computeStyle.js","../node_modules/popper.js/src/utils/isModifierRequired.js","../node_modules/popper.js/src/methods/placements.js","../node_modules/popper.js/src/utils/clockwise.js","../node_modules/popper.js/src/modifiers/flip.js","../node_modules/popper.js/src/modifiers/offset.js","../node_modules/popper.js/src/modifiers/index.js","../node_modules/popper.js/src/modifiers/shift.js","../node_modules/popper.js/src/modifiers/preventOverflow.js","../node_modules/popper.js/src/modifiers/keepTogether.js","../node_modules/popper.js/src/modifiers/arrow.js","../node_modules/popper.js/src/utils/getOppositeVariation.js","../node_modules/popper.js/src/modifiers/inner.js","../node_modules/popper.js/src/modifiers/hide.js","../node_modules/popper.js/src/utils/getRoundedOffsets.js","../node_modules/popper.js/src/modifiers/applyStyle.js","../node_modules/popper.js/src/utils/setAttributes.js","../node_modules/popper.js/src/methods/defaults.js","../node_modules/popper.js/src/index.js","../node_modules/reactstrap/node_modules/react-popper/lib/esm/Manager.js","../node_modules/reactstrap/node_modules/react-popper/lib/esm/utils.js","../node_modules/reactstrap/node_modules/react-popper/lib/esm/Popper.js","../node_modules/reactstrap/es/PopperContent.js","../node_modules/reactstrap/es/TooltipPopoverWrapper.js","../node_modules/reactstrap/es/Popover.js","../node_modules/reactstrap/es/PopoverBody.js","components/Navbar/Navbar.js","components/MobileHeader/MobileHeader.js","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/Alert.js","../node_modules/reactstrap/es/Row.js","../node_modules/reactstrap/es/Col.js","../node_modules/reactstrap/es/Card.js","../node_modules/reactstrap/es/CardHeader.js","../node_modules/reactstrap/es/CardBody.js","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","routes/login.js","../node_modules/reactstrap/es/FormGroup.js","../node_modules/reactstrap/es/Label.js","routes/register.js","services/ApiServices/ProjectService.js","../node_modules/reactstrap/es/Table.js","components/AutoCompleteInput/AutocompleteInput.js","components/EditProjectModal/EditProjectModal.js","modules/loader.js","services/ApiServices/LabelingServices.js","components/Common/Checkbox/index.js","../node_modules/reactstrap/es/Badge.js","services/ColorService.js","components/Common/LabelBadge.js","routes/list/DatasetTableEntry.js","../node_modules/reactstrap/es/DropdownContext.js","../node_modules/reactstrap/es/Dropdown.js","../node_modules/reactstrap/node_modules/react-popper/lib/esm/Reference.js","../node_modules/reactstrap/es/DropdownToggle.js","../node_modules/reactstrap/es/DropdownMenu.js","../node_modules/reactstrap/es/DropdownItem.js","routes/list/DatasetSorting.js","routes/list/DatasetTable.js","routes/list/DataUpload.js","../node_modules/reactstrap/es/ButtonGroup.js","../node_modules/reactstrap/es/Progress.js","components/Common/DragDrop.js","../node_modules/@fortawesome/free-regular-svg-icons/index.mjs","services/ApiServices/CSVServices.js","components/UploadDatasetModal/DatasetConfigView.js","services/ReactHooksService.js","components/UploadDatasetModal/UploadDatasetModal.js","../node_modules/reactstrap/es/PaginationItem.js","../node_modules/reactstrap/es/PaginationLink.js","../node_modules/reactstrap/es/Pagination.js","routes/list/PageSelection.js","../node_modules/reactstrap/es/FormText.js","routes/list/PageSizeInput.js","../node_modules/reactstrap/es/ListGroup.js","../node_modules/reactstrap/es/ListGroupItem.js","routes/list/filters/LabelingSetsFilter.js","routes/list/filters/EmptyDatasetsFilter.js","routes/list/filters/TextSearchFilter.js","routes/list/FilterSelection.js","routes/list/index.js","components/LabelingPanel/LabelingPanel.js","../node_modules/reactstrap/es/UncontrolledDropdown.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.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-c39617d8.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/react-select/dist/react-select.esm.js","components/LabelingSelectionPanel/HelpModal.js","components/LabelingSelectionPanel/LabelingSelectionPanel.js","../node_modules/reactstrap/es/Collapse.js","../node_modules/reactstrap/es/PopoverHeader.js","components/Common/SpinnerButton.js","components/TimeSeriesPanel/ChartSettings.js","components/TimeSeriesPanel/TimeSeriesPanel.js","components/TimeSeriesCollectionPanel/TimeSeriesCollectionPanel.js","components/Snackbar/Snackbar.js","../node_modules/reactstrap/es/Form.js","components/MetadataPanel/MetadataPanel.js","../node_modules/reactstrap/es/FormFeedback.js","components/MetadataPanel/MetaDataEditModal.js","components/MetadataPanel/CustomMetadataPanel.js","components/MetadataPanel/MetadataContainer.js","services/ApiServices/DatasetLabelService.js","routes/dataset.js","components/ConfirmationDilaogueModal/ConfirmationDialogueModal.js","components/EditLabelingModal/EmptyLabelingSetFeedBack.js","components/EditLabelingModal/EditLabelingModal.js","routes/labeling/LabelingTableEntry.js","routes/labeling/LabelingTable.js","routes/labeling/labelings.js","components/EditInstructionModal/EditInstructionModal.js","services/ApiServices/ExperimentService.js","routes/experiments.js","components/NoProjectPage/NoProjectPage.js","components/ProjectRefresh/ProjectRefresh.js","services/ApiServices/MlService.js","components/ConfusionMatrix/ConfusionMatrixView.js","components/SelectedModelModalView/SelectedModelModalView.js","components/TrainingWizard/Steps/Select_Labeling.js","components/TrainingWizard/Steps/Select_Datasets.js","components/TrainingWizard/Steps/Select_Name.js","components/Common/CPP.svg","components/Common/JS.svg","components/Common/PlatformList.js","components/TrainingWizard/selectTrainMethod.js","../node_modules/reactstrap/es/Tooltip.js","../node_modules/reactstrap/es/UncontrolledTooltip.js","components/Hyperparameters/Hyperparameter.js","components/Hyperparameters/NumberHyperparameter.js","../node_modules/react-select/node_modules/react-transition-group/esm/config.js","../node_modules/react-select/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-select/node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-select/node_modules/react-transition-group/esm/Transition.js","../node_modules/react-select/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-select/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/react-select/animated/dist/react-select-animated.esm.js","components/Hyperparameters/SelectionHyperparameter.js","components/Hyperparameters/TextHyperparameter.js","components/Hyperparameters/HyperparameterView.js","components/TrainingWizard/Pipelinestep.js","components/TrainingWizard/index.js","components/ApiSnippetsModal/CodeView.js","services/ApiServices/MLDeploymentService.js","routes/validation/DownloadModal.js","services/WebSensorServices/WebSensorApiSensor.js","services/WebSensorServices/DeviceMotionSensor.js","services/WebSensorServices/BatterySensor.js","services/WebSensorServices/index.js","components/SensorList/SensorList.js","routes/validation/LiveInferenceModal.js","components/Common/Table.js","components/BLE/DFUModal/DFU.js","../node_modules/reactstrap/es/CustomFileInput.js","../node_modules/reactstrap/es/CustomInput.js","routes/validation/DeployModal/DeployFeatures/BLEDeploy.js","routes/validation/DeployModal/DeployFeatures/index.js","routes/validation/DeployModal.js","routes/validation/index.js","components/BLE/BleNotActivated.js","components/BLE/BlePanelSensorList.js","components/BLE/BlePanelRecorderSettings.js","components/BLE/BlePanelConnectDevice.js","services/ApiServices/DeviceService.js","services/bleService.js","components/BLE/BleDeviceProcessor.js","components/BLE/BlePanelSensorstreamGraph.js","components/BLE/BlePanelRecordingDisplay.js","services/ApiServices/ArduinoFirmwareServices.js","components/BLE/DFUModal/DFUModal.js","routes/export/nameGeneration.js","../node_modules/unique-names-generator/src/seed.ts","../node_modules/unique-names-generator/src/unique-names-generator.constructor.ts","../node_modules/unique-names-generator/src/unique-names-generator.ts","components/BLE/BleLabelingMenu.js","utils/ble.js","routes/uploadBLE.js","routes/uploadWeb/UploadWebView.js","routes/uploadWeb/StartStopButton.js","routes/uploadWeb/RecorderSettings.js","routes/uploadWeb/RecordingController.js","routes/uploadWeb/SensorGraphs.js","routes/uploadWeb/FloatingActionButtons.js","routes/uploadWeb/index.js","routes/settings/ListItem.js","routes/settings/ListItemModal.js","routes/settings/DeleteProject.js","routes/settings/EditName.js","components/ApiSnippetsModal/CodeSnippet.js","components/ApiSnippetsModal/Code.js","components/ApiSnippetsModal/CodeSettings.js","components/ApiSnippetsModal/CodeSnippetModal.js","routes/settings/GenerateCode.js","routes/settings/UserEdit.js","services/ApiServices/DeviceApiService.js","routes/settings/Settings.js","../node_modules/reactstrap/es/Toast.js","../node_modules/reactstrap/es/ToastHeader.js","../node_modules/reactstrap/es/ToastBody.js","routes/ModelLivePage/ClassificationDevice.js","routes/ModelLivePage/SetUpBLEConnection.js","routes/ModelLivePage/LivePage.js","routes/ModelLivePage/index.js","AppContent.js","components/ErrorPage/ErrorPage.js","AppView.js","App.js","registerServiceWorker.js","index.js"],"sourcesContent":["'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"highcharts\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"highcharts\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"), require(\"highcharts\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"], root[\"Highcharts\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"highcharts\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"highcharts\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"), require(\"highcharts\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"], root[\"Highcharts\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _highcharts = __webpack_require__(2);\n\nvar _highcharts2 = _interopRequireDefault(_highcharts);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HighchartsReact = function (_React$PureComponent) {\n _inherits(HighchartsReact, _React$PureComponent);\n\n function HighchartsReact(props) {\n _classCallCheck(this, HighchartsReact);\n\n var _this = _possibleConstructorReturn(this, (HighchartsReact.__proto__ || Object.getPrototypeOf(HighchartsReact)).call(this, props));\n\n _this.container = _react2.default.createRef();\n return _this;\n }\n\n _createClass(HighchartsReact, [{\n key: \"createChart\",\n value: function createChart() {\n var props = this.props;\n var H = props.highcharts || _highcharts2.default;\n var constructorType = props.constructorType || \"chart\";\n\n if (!H) {\n console.warn('The \"highcharts\" property was not passed.');\n } else if (!H[constructorType]) {\n console.warn('The \"constructorType\" property is incorrect or some ' + 'required module is not imported.');\n } else if (!props.options) {\n console.warn('The \"options\" property was not passed.');\n } else {\n // Create a chart\n this.chart = H[constructorType](this.container.current, props.options, props.callback ? props.callback : undefined);\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.createChart();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n\n if (props.allowChartUpdate !== false) {\n if (!props.immutable && this.chart) {\n var _chart;\n\n (_chart = this.chart).update.apply(_chart, [props.options].concat(_toConsumableArray(props.updateArgs || [true, true])));\n } else {\n this.createChart();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // Destroy chart\n if (this.chart) {\n this.chart.destroy();\n this.chart = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // Create container for the chart\n return _react2.default.createElement(\"div\", _extends({}, this.props.containerProps, { ref: this.container }));\n }\n }]);\n\n return HighchartsReact;\n}(_react2.default.PureComponent);\n\nexports.default = HighchartsReact;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// highcharts-react.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c411af7e3e35a8596495","import React from \"react\";\r\nimport Highcharts from \"highcharts\";\r\n\r\nexport default class HighchartsReact extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.container = React.createRef();\r\n }\r\n\r\n createChart() {\r\n const props = this.props;\r\n const H = props.highcharts || Highcharts;\r\n const constructorType = props.constructorType || \"chart\";\r\n\r\n if (!H) {\r\n console.warn('The \"highcharts\" property was not passed.');\r\n } else if (!H[constructorType]) {\r\n console.warn('The \"constructorType\" property is incorrect or some ' +\r\n 'required module is not imported.');\r\n } else if (!props.options) {\r\n console.warn('The \"options\" property was not passed.');\r\n } else {\r\n // Create a chart\r\n this.chart = H[constructorType](\r\n this.container.current,\r\n props.options,\r\n props.callback ? props.callback : undefined\r\n );\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.createChart();\r\n }\r\n\r\n componentDidUpdate() {\r\n const props = this.props;\r\n\r\n if (props.allowChartUpdate !== false) {\r\n if (!props.immutable && this.chart) {\r\n this.chart.update(\r\n props.options,\r\n ...(props.updateArgs || [true, true])\r\n );\r\n } else {\r\n this.createChart();\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n // Destroy chart\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = null;\r\n }\r\n }\r\n\r\n render() {\r\n // Create container for the chart\r\n return React.createElement(\r\n \"div\",\r\n { ...this.props.containerProps, ref: this.container }\r\n );\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/HighchartsReact.js","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n// module id = 1\n// module chunks = 0 1","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"Highcharts\",\"commonjs\":\"highcharts\",\"commonjs2\":\"highcharts\",\"amd\":\"highcharts\"}\n// module id = 2\n// module chunks = 0 1","/**\n * @license Highcharts JS v10.3.3 (2023-01-20)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highcharts', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (window) {\n 'use strict';\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n * @private\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.3.3', Globals.win = (typeof window !== 'undefined' ?\n window :\n {}), // eslint-disable-line node/no-unsupported-features/es-builtins\n Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n var supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n var severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = \"\" + severity + \": Deprecated member\";\n }\n var isCode = isNumber(code);\n var message = isCode ?\n \"\" + severity + \" #\" + code + \": www.highcharts.com/errors/\" + code + \"/\" :\n code.toString();\n var defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n var additionalMessages_1 = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages_1 += \"\\n - \".concat(key, \": \").concat(value);\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages_1;\n }\n fireEvent(H, 'displayError', { chart: chart, code: code, message: message, params: params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n var i,\n args = arguments,\n ret = {};\n var doCopy = function (copy,\n original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n var len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n var result = {};\n objectEach(newer, function (_val, key) {\n var ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key] ||\n // If the newer key is explicitly undefined, keep it (#10525)\n (key in newer && !(key in older))) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n var c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [keyOrAttribs]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, keyOrAttribs, value) {\n var isGetter = isString(keyOrAttribs) && !defined(value);\n var ret;\n var attrSingle = function (value,\n key) {\n // Set the value\n if (defined(value)) {\n elem.setAttribute(key,\n value);\n // Get the value\n }\n else if (isGetter) {\n ret = elem.getAttribute(key);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && key === 'class') {\n ret = elem.getAttribute(key + 'Name');\n }\n // Remove the value\n }\n else {\n elem.removeAttribute(key);\n }\n };\n // If keyOrAttribs is a string\n if (isString(keyOrAttribs)) {\n attrSingle(value, keyOrAttribs);\n // Else if keyOrAttribs is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(keyOrAttribs, attrSingle);\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number|undefined} id\n * Id of a timeout.\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick\n *\n * @param {...Array} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n var args = arguments;\n var length = args.length;\n for (var i = 0; i < length; i++) {\n var arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && defined(styles.opacity)) {\n styles.filter = \"alpha(opacity=\".concat(styles.opacity * 100, \")\");\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @function Highcharts.extendClass\n *\n * @param {Highcharts.Class} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class}\n * A new prototype.\n */\n function extendClass(parent, members) {\n var obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function () {\n var outerArgs = arguments,\n scope = this;\n return func.apply(this, [\n function () {\n return proceed.apply(scope, arguments.length ? arguments : outerArgs);\n }\n ].concat([].slice.call(arguments)));\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n var i,\n retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, getMagnitude(interval));\n var normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n var length = arr.length;\n var sortValue,\n i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n var i = data.length,\n min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n var i = data.length,\n max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n var timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n var pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n var pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n var child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n var customGetStyle = (H.getStyle || // oldie getStyle\n getStyle);\n var style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n var offsetWidth = Math.min(el.offsetWidth,\n el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n var boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (customGetStyle(el, 'padding-left', true) || 0) -\n (customGetStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (customGetStyle(el, 'padding-top', true) || 0) -\n (customGetStyle(el, 'padding-bottom', true) || 0)));\n }\n if (!win.getComputedStyle) {\n // SVG not supported, forgot to load oldie.js?\n error(27, true);\n }\n // Otherwise, get the computed style\n var css = win.getComputedStyle(el,\n void 0); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find\n *\n * @param {Array} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n var find = Array.prototype.find ?\n function (arr,\n callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n var i;\n var length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n var docElem = doc.documentElement,\n box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0,\n left: 0,\n width: 0,\n height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n var _a;\n error(32, false, void 0, (_a = {}, _a[\"Highcharts.\".concat(key)] = \"use Array.\".concat(val), _a));\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent\n *\n * @param {Highcharts.Class|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options) {\n /* eslint-enable valid-jsdoc */\n if (options === void 0) { options = {}; }\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n var owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n var events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n var addEventListener = (el.addEventListener || H.addEventListenerPolyfill);\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n var eventObject = {\n fn: fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort(function (a, b) { return a.order - b.order; });\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent\n *\n * @param {Highcharts.Class|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n var removeEventListener = (el.removeEventListener || H.removeEventListenerPolyfill);\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n var types,\n len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n var owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n var events = owner.hcEvents;\n if (type) {\n var typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n var e,\n i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event,\n // and setting it will cause en error in IE8 (#2465).\n type: type\n });\n }\n var events = [];\n var object = el;\n var multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort(function (a, b) { return a.order - b.order; });\n }\n // Call the collected event handlers\n events.forEach(function (obj) {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n var serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n var uniqueKey = (function () {\n var hash = Math.random().toString(36).substring(2, 9) + '-';\n var id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n var args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n var Utilities = {\n addEvent: addEvent,\n arrayMax: arrayMax,\n arrayMin: arrayMin,\n attr: attr,\n clamp: clamp,\n cleanRecursively: cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat: correctFloat,\n createElement: createElement,\n css: css,\n defined: defined,\n destroyObjectProperties: destroyObjectProperties,\n discardElement: discardElement,\n erase: erase,\n error: error,\n extend: extend,\n extendClass: extendClass,\n find: find,\n fireEvent: fireEvent,\n getMagnitude: getMagnitude,\n getNestedProperty: getNestedProperty,\n getStyle: getStyle,\n inArray: inArray,\n isArray: isArray,\n isClass: isClass,\n isDOMElement: isDOMElement,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n keys: keys,\n merge: merge,\n normalizeTickInterval: normalizeTickInterval,\n objectEach: objectEach,\n offset: offset,\n pad: pad,\n pick: pick,\n pInt: pInt,\n relativeLength: relativeLength,\n removeEvent: removeEvent,\n splat: splat,\n stableSort: stableSort,\n syncTimeout: syncTimeout,\n timeUnits: timeUnits,\n uniqueKey: uniqueKey,\n useSerialIds: useSerialIds,\n wrap: wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary\n */ /**\n * @name Highcharts.Dictionary#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n var ChartDefaults = {\n /**\n * Default `mapData` for all series,\n in terms of a GeoJSON or TopoJSON\n * object. If set to a string,\n it functions as an index into the\n * `Highcharts.maps` array.\n *\n * For picking out individual shapes and geometries to use for each series\n * of the map,\n see [series.mapData](#series.map.mapData).\n *\n * @sample maps/demo/geojson\n * Loading GeoJSON data\n * @sample maps/chart/topojson\n * Loading TopoJSON data\n *\n * @type {string|Array<*>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axes,\n the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks,\n as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy,\n it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n * then the `alignTicks ` will be disabled for the axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * When using multiple axes,\n align the thresholds. When this is true,\n other\n * ticks will also be aligned.\n *\n * Note that for line series and some other series types,\n the `threshold`\n * option is set to `null` by default. This will in turn cause their y-axis\n * to not have a threshold. In order to avoid that,\n set the series\n * `threshold` to 0 or another number.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n or\n * if the axis is logarithmic,\n the threshold will not be aligned.\n *\n * @sample {highcharts} highcharts/chart/alignthresholds/ Set to true\n *\n * @since 10.0.0\n * @product highcharts highstock gantt\n * @apioption chart.alignThresholds\n */\n alignThresholds: false,\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation,\n see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`,\n it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object,\n the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points,\n the chart redraw\n * will be done with animation,\n but in case of more data points,\n it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial}\n * @default undefined\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`,\n allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time,\n using the\n * `addSeries` method. One parameter,\n `event`,\n is passed to the\n * function,\n containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter,\n `event`,\n * is passed to the function,\n containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',\n e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2,\n it also waits\n * for images to be loaded,\n for example from point markers. One\n * parameter,\n `event`,\n is passed to the function,\n containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn,\n either after a call to\n * `chart.redraw()` or after an axis,\n series or point is modified with\n * the `redraw` option set to `true`. One parameter,\n `event`,\n is passed\n * to the function,\n containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event),\n and after each redraw (directly after the `redraw` event).\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter,\n `event`,\n is\n * passed to the function,\n containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @declare Highcharts.OptionsChartPanningTypeValue\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @product highcharts highstock gantt\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @deprecated\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-1`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * By default, (because of memory and performance reasons) the chart does\n * not copy the data but keeps it as a reference. In some cases, this might\n * result in mutating the original data source. In order to prevent that,\n * set that property to false. Please note that changing that might decrease\n * performance, especially with bigger sets of data.\n *\n * @type {boolean}\n * @since 10.1.0\n */\n allowMutatingData: true,\n /**\n * Alias of `type`.\n *\n * @sample {highcharts} highcharts/chart/defaultseriestype/\n * Bar\n *\n * @deprecated\n *\n * @product highcharts\n */\n defaultSeriesType: 'line',\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n *\n * @since 2.2\n * @deprecated 10.2.1\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n */\n theme: {\n /**\n * @internal\n */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @since 2.1\n * @apioption chart.reflow\n */\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div`. Note\n * that since the default font styles are applied in the renderer, it\n * is ignorant of the individual chart options and must be set globally.\n * Also note that changing the font size in the `chart.style` options only\n * applies to those elements that do not have a specific `fontSize` setting.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": \"\\\"Lucida Grande\\\", \\\"Lucida Sans Unicode\\\", Verdana, Arial, Helvetica, sans-serif\",\"fontSize\":\"12px\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highcharts} highcharts/chart/zoomtype-polar/\n * Zoom on polar chart\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n * @sample {highmaps} maps/chart/zoomtype-xy/\n * Map with selection zoom\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @deprecated\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n * @deprecated\n */\n zoomBySingleTouch: false,\n /**\n * Chart zooming options.\n * @since 10.2.1\n */\n zooming: {\n /**\n * Equivalent to [type](#chart.zooming.type), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `type` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.pinchType\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @declare Highcharts.OptionsChartZoomingTypeValue\n * @type {string}\n * @default {highcharts} undefined\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.type\n */\n /**\n * Set a key to hold when dragging to zoom the chart. This is useful to\n * avoid zooming while moving points. Should be set different than\n * [chart.panKey](#chart.panKey).\n *\n * @type {string}\n * @default {highcharts} undefined\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @requires modules/draggable-points\n * @apioption chart.zooming.key\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger\n * pinch will still work as set up by [chart.zooming.pinchType]\n * (#chart.zooming.pinchType). However, `singleTouch` will interfere\n * with touch-dragging the chart to read the tooltip. And especially\n * when vertical zooming is enabled, it will make it hard to scroll\n * vertically on the page.\n *\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n *\n * @product highcharts highstock gantt\n */\n singleTouch: false,\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.zooming.resetButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.2.1\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 10.2.1\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.zooming.resetButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n }\n },\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#335cad\" /* Palette.highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* Palette.neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isNumber = U.isNumber,\n merge = U.merge,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n var Color = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Color(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n var GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n // Backwards compatibility, allow instanciation without new (#13053)\n if (!(this instanceof Color)) {\n return new Color(input);\n }\n this.init(input);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n Color.parse = function (input) {\n return input ? new Color(input) : Color.None;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n Color.prototype.init = function (input) {\n var result,\n rgba,\n i,\n parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map(function (stop) { return new Color(stop[1]); });\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n var len = input.length,\n col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n };\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n Color.prototype.get = function (format) {\n var input = this.input,\n rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n var ret_1 = merge(input);\n ret_1.stops = [].slice.call(ret_1.stops);\n this.stops.forEach(function (stop, i) {\n ret_1.stops[i] = [\n ret_1.stops[i][0],\n stop.get(format)\n ];\n });\n return ret_1;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return \"\".concat(rgba[3]);\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n };\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n Color.prototype.brighten = function (alpha) {\n var rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (var i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n };\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n Color.prototype.setOpacity = function (alpha) {\n this.rgba[3] = alpha;\n return this;\n };\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n Color.prototype.tweenTo = function (to, pos) {\n var fromRgba = this.rgba,\n toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n var hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n return Color;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.scss.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n var SeriesPalettes = {\n /**\n * Colors for data series and points.\n */\n colors: [\n '#7cb5ec',\n '#434348',\n '#90ed7d',\n '#f7a35c',\n '#8085e9',\n '#f15c80',\n '#e4d354',\n '#2b908f',\n '#f45b5b',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var defined = U.defined,\n error = U.error,\n extend = U.extend,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n splat = U.splat,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n var hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} [options]\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n var Time = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Time(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n Time.prototype.get = function (unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n var realMs = date.getTime();\n var ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n var ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n };\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n Time.prototype.set = function (unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n var offset = this.getTimezoneOffset(date);\n var ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n var newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n };\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} [options]\n *\n */\n Time.prototype.update = function (options) {\n if (options === void 0) { options = {}; }\n var useUTC = pick(options.useUTC,\n true);\n this.options = options = merge(true, this.options, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset) || void 0;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n };\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n Time.prototype.makeTime = function (year, month, date, hours, minutes, seconds) {\n var d,\n offset,\n newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n };\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n Time.prototype.timezoneOffsetFunction = function () {\n var time = this,\n options = this.options,\n getTimezoneOffset = options.getTimezoneOffset,\n moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n };\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n Time.prototype.dateFormat = function (format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n var time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n };\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array|Highcharts.Dictionary} f\n * General format description\n * @return {Highcharts.Dictionary}\n * The object definition\n */\n Time.prototype.resolveDTLFormat = function (f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n };\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n Time.prototype.getTimeTicks = function (normalizedInterval, min, max, startOfWeek) {\n var time = this,\n Date = time.Date,\n tickPositions = [],\n higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min),\n interval = normalizedInterval.unitRange,\n count = normalizedInterval.count || 1;\n var i,\n minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength,\n minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n var minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n var t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks: higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n };\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n Time.prototype.getDateFormat = function (range, timestamp, startOfWeek, dateTimeLabelFormats) {\n var dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n var n = 'millisecond', \n // for sub-millisecond data, #4223\n lastN = n;\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w', timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n return this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n };\n return Time;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number|undefined}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/Defaults.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var isTouchDevice = H.isTouchDevice,\n svg = H.svg;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n * @private\n */\n var defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n *\n * ### Legacy\n *\n * In Highcharts 3.x, the default colors were:\n * ```js\n * colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce',\n * '#492970', '#f28f43', '#77a1e5', '#c42525', '#a6c96a']\n * ```\n *\n * In Highcharts 2.x, the default colors were:\n * ```js\n * colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE',\n * '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92']\n * ```\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n *\n * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}\n * @default [\"#7cb5ec\", \"#434348\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\",\n * \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"18px\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"16px\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * HTML labels that can be positioned anywhere in the chart area.\n *\n * This option is deprecated since v7.1.2. Instead, use\n * [annotations](#annotations) that support labels.\n *\n * @deprecated\n * @product highcharts highstock\n */\n labels: {\n /**\n * An HTML label that can be positioned anywhere in the chart area.\n *\n * @deprecated\n * @type {Array<*>}\n * @apioption labels.items\n */\n /**\n * Inner HTML or text for the label.\n *\n * @deprecated\n * @type {string}\n * @apioption labels.items.html\n */\n /**\n * CSS styles for each label. To position the label, use left and top\n * like this:\n * ```js\n * style: {\n * left: '100px',\n * top: '100px'\n * }\n * ```\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @apioption labels.items.style\n */\n /**\n * Shared CSS styles for all labels.\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"position\": \"absolute\"}\n */\n style: {\n /**\n * @ignore-option\n */\n position: 'absolute',\n /**\n * @ignore-option\n */\n color: \"#333333\" /* Palette.neutralColor80 */\n }\n },\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginBottom\n */\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginTop\n */\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the\n * [adapt chart to legend](https://github.com/highcharts/adapt-chart-to-legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#003399\" /* Palette.highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"12px\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '12px',\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * For a color axis with data classes, how many decimals to render in\n * the legend. The default preserves the decimals of the range numbers.\n *\n * @type {number}\n * @default -1\n * @product highcharts highmaps\n * @apioption legend.valueDecimals\n */\n /**\n * For a color axis with data classes, a suffix for the range numbers in\n * the legend.\n *\n * @type {string}\n * @default ''\n * @product highcharts highmaps\n * @apioption legend.valueSuffix\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a custom position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * To find the actual hovered `Point` instance, use\n * `this.chart.hoverPoint`. For shared or split tooltips, all the hover\n * points are available in `this.chart.hoverPoints`.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info: `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 5px by default\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %b %e, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %b %e, %H:%M:%S',\n /** @internal */\n minute: '%A, %b %e, %H:%M',\n /** @internal */\n hour: '%A, %b %e, %H:%M',\n /** @internal */\n day: '%A, %b %e, %Y',\n /** @internal */\n week: 'Week from %A, %b %e, %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '{point.key}
',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highcharts|highstock} highcharts/tooltip/pointformat-extra-information/\n * Show extra information about points in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '\\u25CF {series.name}: {point.y}
',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: color(\"#f7f7f7\" /* Palette.neutralColor3 */)\n // @todo: Disallow undefined as input for colors\n .setOpacity(0.85).get(),\n /**\n * The pixel width of the tooltip border.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2px by default\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: 1,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '12px',\n /** @internal */\n whiteSpace: 'nowrap'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 {geojson.copyrightShort}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* Palette.neutralColor40 */,\n /** @internal */\n fontSize: '9px'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n var defaultTime = new Time(merge(defaultOptions.global,\n defaultOptions.time));\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n var DefaultOptions = {\n defaultOptions: defaultOptions,\n defaultTime: defaultTime,\n getOptions: getOptions,\n setOptions: setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.SelectEventObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var win = H.win;\n var isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n var Fx = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Fx(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n Fx.prototype.dSetter = function () {\n var paths = this.paths,\n start = paths && paths[0],\n end = paths && paths[1],\n now = this.now || 0;\n var path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (var i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n var startSeg = start[i];\n var endSeg = end[i];\n var tweenSeg = [];\n for (var j = 0; j < endSeg.length; j++) {\n var startItem = startSeg[j];\n var endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n };\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n Fx.prototype.update = function () {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n };\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n Fx.prototype.run = function (from, to, unit) {\n var self = this,\n options = self.options,\n timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (var i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n };\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n Fx.prototype.step = function (gotoEnd) {\n var t = +new Date(),\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n var ret,\n done;\n if ((elem.attr) && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n };\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n Fx.prototype.initPath = function (elem, fromD, toD) {\n var startX = elem.startX,\n endX = elem.endX,\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1;\n var shift,\n fullLength,\n i,\n reverse,\n start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end,\n end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n var moveSegment = arr[0],\n otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n var z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n var segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n var lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n Fx.prototype.fillSetter = function () {\n Fx.prototype.strokeSetter.apply(this, arguments);\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n Fx.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n return Fx;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n var labelAnimation = animObject(animation),\n s = series ? [series] : chart.series;\n var defer = 0,\n duration = 0;\n s.forEach(function (series) {\n var seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n var anim = {\n defer: Math.max(0,\n defer - duration),\n duration: Math.min(defer,\n duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n var i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n var animationExports = {\n animate: animate,\n animObject: animObject,\n getDeferredAnimation: getDeferredAnimation,\n setAnimation: setAnimation,\n stop: stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n error = U.error,\n isFunction = U.isFunction,\n isString = U.isString,\n objectEach = U.objectEach,\n splat = U.splat;\n var trustedTypes = win.trustedTypes;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n var trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: function (s) { return s; }\n }));\n var emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // In IE8, DOMParser is undefined. IE9 and PhantomJS are only able to parse XML.\n var hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n var AST = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n function AST(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n AST.filterUserAttributes = function (attributes) {\n objectEach(attributes, function (val, key) {\n var valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some(function (ref) { return val.indexOf(ref) === 0; });\n }\n if (!valid) {\n error(33, false, void 0, {\n 'Invalid attribute in config': \"\".concat(key)\n });\n delete attributes[key];\n }\n // #17753, < is not allowed in SVG attributes\n if (isString(val) && attributes[key]) {\n attributes[key] = val.replace(/} The parsed nodes.\n */\n AST.prototype.parseMarkup = function (markup) {\n var nodes = [];\n markup = markup\n .trim()\n // The style attribute throws a warning when parsing when CSP is\n // enabled (#6884), so use an alias and pick it up below\n // Make all quotation marks parse correctly to DOM (#17627)\n .replace(/ style=([\"'])/g, ' data-style=$1');\n var doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n var body = createElement('div');\n body.innerHTML = markup;\n doc = { body: body };\n }\n var appendChildNodes = function (node,\n addTo) {\n var tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n var astNode = {\n tagName: tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n var parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n var attributes_2 = {};\n [].forEach.call(parsedAttributes, function (attrib) {\n if (attrib.name === 'data-style') {\n astNode.style = AST.parseStyle(attrib.value);\n }\n else {\n attributes_2[attrib.name] = attrib.value;\n }\n });\n astNode.attributes = attributes_2;\n }\n // Handle children\n if (node.childNodes.length) {\n var children_1 = [];\n [].forEach.call(node.childNodes, function (childNode) {\n appendChildNodes(childNode, children_1);\n });\n if (children_1.length) {\n astNode.children = children_1;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, function (childNode) { return appendChildNodes(childNode, nodes); });\n return nodes;\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedAttributes)\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @type {Array}\n */\n AST.allowedAttributes = [\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'text-anchor',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'xlink:href',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedReferences)\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @type {Array}\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedTags)\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @type {Array}\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'textPath',\n 'thead',\n 'title',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n /**\n * Allow all custom SVG and HTML attributes, references and tags (together\n * with potentially harmful ones) to be added to the DOM from the chart\n * configuration. In other words, disable the the allow-listing which is the\n * primary functionality of the AST.\n *\n * WARNING: Setting this property to `true` while allowing untrusted user\n * data in the chart configuration will expose your application to XSS\n * security risks!\n *\n * Note that in case you want to allow a known set of tags or attributes,\n * you should allow-list them instead of disabling the filtering totally.\n * See [allowedAttributes](Highcharts.AST#.allowedAttributes),\n * [allowedReferences](Highcharts.AST#.allowedReferences) and\n * [allowedTags](Highcharts.AST#.allowedTags). The `bypassHTMLFiltering`\n * setting is intended only for those cases where allow-listing is not\n * practical, and the chart configuration already comes from a secure\n * source.\n *\n * @example\n * // Allow all custom attributes, references and tags (disable DOM XSS\n * // filtering)\n * Highcharts.AST.bypassHTMLFiltering = true;\n *\n * @name Highcharts.AST.bypassHTMLFiltering\n * @static\n */\n AST.bypassHTMLFiltering = false;\n return AST;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var getNestedProperty = U.getNestedProperty,\n isNumber = U.isNumber,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n val,\n index;\n var floatRegex = /f$/;\n var decRegex = /\\.([0-9])/;\n var lang = defaultOptions.lang;\n var time = chart && chart.time || defaultTime;\n var numberFormatter = chart && chart.numberFormatter || numberFormat;\n var ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n var decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n var ret,\n fractionDigits;\n var lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n var roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals,\n origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n var strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n var thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var FormatUtilities = {\n dateFormat: dateFormat,\n format: format,\n numberFormat: numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n var clamp = U.clamp,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n var origBoxes = boxes,\n reducedLen = origBoxes.reducedLen || len,\n sortByRank = function (a,\n b) {\n return (b.rank || 0) - (a.rank || 0);\n }, sortByTarget = function (a, b) {\n return a.target - b.target;\n };\n var i,\n overlapping = true,\n restBoxes = [], // The outranked overshoot\n box,\n target,\n total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map(function (box) { return ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }); });\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some(function (box) {\n var posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(function () {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach(function (box) { return delete box.pos; });\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n stop = A.stop;\n var deg2rad = H.deg2rad,\n doc = H.doc,\n noop = H.noop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n removeEvent = U.removeEvent,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n var SVGElement = /** @class */ (function () {\n function SVGElement() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n this.symbolCustomAttribs = [\n 'x',\n 'y',\n 'width',\n 'height',\n 'r',\n 'start',\n 'end',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'rounded'\n ];\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n SVGElement.prototype._defaultGetter = function (key) {\n var ret = pick(this[key + 'Value'], // align getter\n this[key],\n this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype._defaultSetter = function (value, key, element) {\n element.setAttribute(key, value);\n };\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.add = function (parent) {\n var renderer = this.renderer,\n element = this.element;\n var inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n };\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n SVGElement.prototype.addClass = function (className, replace) {\n var currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n };\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n SVGElement.prototype.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n };\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.align = function (alignOptions, alignByTranslate, box) {\n var attribs = {},\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects;\n var x,\n y,\n alignTo,\n alignFactor,\n vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n var align = alignOptions.align,\n vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n SVGElement.prototype.alignSetter = function (value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n };\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.animate = function (params, options, complete) {\n var _this = this;\n var animOptions = animObject(pick(options,\n this.renderer.globalAnimation,\n true)),\n deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (pick(doc.hidden, doc.msHidden, doc.webkitHidden, false)) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(function () {\n if (_this.element) {\n animate(_this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete || animOptions.complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n };\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n SVGElement.prototype.applyTextOutline = function (textOutline) {\n var elem = this.element,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n var parts = textOutline.split(' ');\n var color = parts[parts.length - 1];\n var strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n var outline_1 = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline_1, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n var parentElem = elem.querySelector('textPath') || elem;\n [].forEach.call(parentElem.childNodes, function (childNode) {\n var clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone\n .removeAttribute(prop); });\n }\n outline_1.appendChild(clone);\n });\n // Collect the sum of dy from all children, included nested ones\n var totalHeight_1 = 0;\n [].forEach.call(parentElem.querySelectorAll('text tspan'), function (element) {\n totalHeight_1 += Number(element.getAttribute('dy'));\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B';\n // Reset the position for the following text\n attr(br, {\n x: Number(elem.getAttribute('x')),\n dy: -totalHeight_1\n });\n // Insert the outline\n outline_1.appendChild(br);\n parentElem.insertBefore(outline_1, parentElem.firstChild);\n }\n };\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n SVGElement.prototype.attr = function (hash, val, complete, continueAnimation) {\n var element = this.element,\n symbolCustomAttribs = this.symbolCustomAttribs;\n var key,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n // Let the shadow follow the main element\n if (!this.styledMode &&\n this.shadows &&\n /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/\n .test(key)) {\n this.updateShadows(key, val, setter);\n }\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n };\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n SVGElement.prototype.clip = function (clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n };\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n SVGElement.prototype.crisp = function (rect, strokeWidth) {\n var wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n var normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n };\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n SVGElement.prototype.complexColor = function (colorOptions, prop, elem) {\n var renderer = this.renderer;\n var colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n var gradientObject_1 = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject_1.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject_1.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n var stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject_1);\n // Add the stop element to the gradient\n gradientObject_1.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n };\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n SVGElement.prototype.css = function (styles) {\n var oldStyles = this.styles,\n newStyles = {},\n elem = this.element;\n var textWidth,\n hasNew = !oldStyles;\n // convert legacy\n if (styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (value, n) {\n if (oldStyles && oldStyles[n] !== value) {\n newStyles[n] = value;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n var stylesToApply_1 = merge(styles);\n if (elem.namespaceURI === this.SVG_NS) {\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be\n // added to the DOM. In styled mode, no CSS should find its way\n // to the DOM whatsoever (#6173, #6474).\n ['textOutline', 'textOverflow', 'width'].forEach(function (key) { return (stylesToApply_1 &&\n delete stylesToApply_1[key]); });\n }\n css(elem, stylesToApply_1);\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n SVGElement.prototype.dashstyleSetter = function (value) {\n var i,\n strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n var v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n };\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n SVGElement.prototype.destroy = function () {\n var wrapper = this,\n element = wrapper.element || {},\n renderer = wrapper.renderer,\n ownerSVGElement = element.ownerSVGElement;\n var parentToClean = (renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0),\n grandParent,\n i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n var clipPath_1 = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath_1.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath_1.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n if (!renderer.styledMode) {\n wrapper.destroyShadows();\n }\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n };\n /**\n * Destroy shadows on the element.\n *\n * @private\n * @function Highcharts.SVGElement#destroyShadows\n *\n */\n SVGElement.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = void 0;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.dSetter = function (value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce(function (acc, seg, i) {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n };\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n SVGElement.prototype.fadeOut = function (duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.hide();\n }\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.fillSetter = function (value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n };\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n SVGElement.prototype.getBBox = function (reload, rot) {\n var wrapper = this,\n alignValue = wrapper.alignValue,\n element = wrapper.element,\n renderer = wrapper.renderer,\n styles = wrapper.styles,\n textStr = wrapper.textStr,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n isSVG = element.namespaceURI === wrapper.SVG_NS,\n rotation = pick(rot,\n wrapper.rotation, 0),\n fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n var bBox,\n width,\n height,\n toggleTextShadowShim,\n cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation,\n fontSize,\n wrapper.textWidth,\n alignValue,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n var outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display: display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // HTML elements with `exporting.allowHTML` and\n // legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight,\n x: 0,\n y: 0\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { x: 0, y: 0, width: 0, height: 0 };\n }\n // VML Renderer or useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[\"\" + (fontSize || '') + \",\".concat(Math.round(height))] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n var baseline = Number(element.getAttribute('y') || 0) - bBox.y,\n alignFactor = {\n 'right': 1,\n 'center': 0.5\n }[alignValue || 0] || 0,\n rad = rotation * deg2rad,\n rad90 = (rotation - 90) * deg2rad,\n wCosRad = width * Math.cos(rad),\n wSinRad = width * Math.sin(rad),\n cosRad90 = Math.cos(rad90),\n sinRad90 = Math.sin(rad90), \n // Find the starting point on the left side baseline of\n // the text\n pX = bBox.x + alignFactor * (width - wCosRad),\n pY = bBox.y + baseline - alignFactor * wSinRad, \n // Find all corners\n aX = pX + baseline * cosRad90,\n bX = aX + wCosRad,\n cX = bX - height * cosRad90,\n dX = cX - wCosRad,\n aY = pY + baseline * sinRad90,\n bY = aY + wSinRad,\n cY = bY - height * sinRad90,\n dY = cY - wSinRad;\n // Deduct the bounding box from the corners\n bBox.x = Math.min(aX, bX, cX, dX);\n bBox.y = Math.min(aY, bY, cY, dY);\n bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;\n bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n };\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n SVGElement.prototype.getStyle = function (prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n };\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n SVGElement.prototype.hasClass = function (className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n };\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.hide = function () {\n return this.attr({ visibility: 'hidden' });\n };\n /**\n * @private\n */\n SVGElement.prototype.htmlGetBBox = function () {\n return { height: 0, width: 0, x: 0, y: 0 };\n };\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n SVGElement.prototype.init = function (renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n };\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n SVGElement.prototype.on = function (eventType, handler) {\n var onEvents = this.onEvents;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.opacitySetter = function (value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n var opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n };\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n SVGElement.prototype.removeClass = function (className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(\"(^| )\".concat(className, \"( |$)\")) : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n };\n /**\n *\n * @private\n */\n SVGElement.prototype.removeTextOutline = function () {\n var outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n };\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n SVGElement.prototype.safeRemoveChild = function (element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n };\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setRadialReference = function (coordinates) {\n var existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n };\n /**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setTextPath = function (path, textPathOptions) {\n var _this = this;\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n var url = this.renderer.url,\n textWrapper = this.text || this,\n textPath = textWrapper.textPath,\n attributes = textPathOptions.attributes,\n enabled = textPathOptions.enabled;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n var undo = addEvent(textWrapper, 'afterModifyTree',\n function (e) {\n if (path && enabled) {\n // Set ID for the path\n var textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the \n var textAttribs = {\n // dx/dy options must by set on (parent), the\n // rest should be set on \n x: 0,\n y: 0\n };\n if (defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n _this.attr({ transform: '' });\n if (_this.box) {\n _this.box = _this.box.destroy();\n }\n // Wrap the nodes in a textPath\n var children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: \"\" + url + \"#\".concat(textPathId)\n }),\n children: children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path: path, undo: undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n };\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions]\n * The shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @param {Highcharts.SVGElement} [group]\n * The SVG group element where the shadows will be applied. The\n * default is to add it to the same parent as the current element.\n * Internally, this is ised for pie slices, where all the shadows are\n * added to an element behind all the slices.\n *\n * @param {boolean} [cutOff]\n * Used internally for column shadows.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.shadow = function (shadowOptions, group, cutOff) {\n var shadows = [],\n _a = this,\n element = _a.element,\n oldShadowOptions = _a.oldShadowOptions,\n parentGroup = _a.parentGroup,\n parentInverted = parentGroup && parentGroup.rotation === 90,\n defaultShadowOptions = {\n color: \"#000000\" /* Palette.neutralColor100 */,\n offsetX: parentInverted ? -1 : 1,\n offsetY: parentInverted ? -1 : 1,\n opacity: 0.15,\n width: 3\n };\n var i,\n shadow,\n strokeWidth,\n shadowElementOpacity,\n update = false, \n // compensate for inverted plot area\n transform,\n options;\n if (shadowOptions === true) {\n options = defaultShadowOptions;\n }\n else if (typeof shadowOptions === 'object') {\n options = extend(defaultShadowOptions, shadowOptions);\n }\n // Update shadow when options change (#12091).\n if (options) {\n // Go over each key to look for change\n if (options && oldShadowOptions) {\n objectEach(options, function (value, key) {\n if (value !== oldShadowOptions[key]) {\n update = true;\n }\n });\n }\n if (update) {\n this.destroyShadows();\n }\n this.oldShadowOptions = options;\n }\n if (!options) {\n this.destroyShadows();\n }\n else if (!this.shadows) {\n shadowElementOpacity = options.opacity / options.width;\n transform = parentInverted ?\n \"translate(\".concat(options.offsetY, \", \").concat(options.offsetX, \")\") :\n \"translate(\".concat(options.offsetX, \", \").concat(options.offsetY, \")\");\n for (i = 1; i <= options.width; i++) {\n shadow = element.cloneNode(false);\n strokeWidth = (options.width * 2) + 1 - (2 * i);\n attr(shadow, {\n stroke: (shadowOptions.color ||\n \"#000000\" /* Palette.neutralColor100 */),\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n transform: transform,\n fill: 'none'\n });\n shadow.setAttribute('class', (shadow.getAttribute('class') || '') + ' highcharts-shadow');\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n if (group) {\n group.element.appendChild(shadow);\n }\n else if (element.parentNode) {\n element.parentNode.insertBefore(shadow, element);\n }\n shadows.push(shadow);\n }\n this.shadows = shadows;\n }\n return this;\n };\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=true]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.show = function (inherit) {\n if (inherit === void 0) { inherit = true; }\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n };\n /**\n * Set the stroke-width and record it on the SVGElement\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype['stroke-widthSetter'] = function (value, key, element) {\n // Record it for quick access in getter\n this[key] = value;\n element.setAttribute(key, value);\n };\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n SVGElement.prototype.strokeWidth = function () {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n var val = this.getStyle('stroke-width');\n var ret = 0,\n dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n };\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n SVGElement.prototype.symbolAttr = function (hash) {\n var wrapper = this;\n [\n 'x',\n 'y',\n 'r',\n 'start',\n 'end',\n 'width',\n 'height',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'clockwise'\n ].forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n SVGElement.prototype.textSetter = function (value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n SVGElement.prototype.titleSetter = function (value) {\n var el = this.element;\n var titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n };\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.toFront = function () {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n };\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n SVGElement.prototype.translate = function (x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n };\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @function Highcharts.SVGElement#updateShadows\n *\n * @param {string} key\n * The attribute name.\n *\n * @param {number} value\n * The value of the attribute.\n *\n * @param {Function} setter\n * The setter function, inherited from the parent wrapper.\n */\n SVGElement.prototype.updateShadows = function (key, value, setter) {\n var shadows = this.shadows;\n if (shadows) {\n var i = shadows.length;\n while (i--) {\n setter.call(shadows[i], key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value, key, shadows[i]);\n }\n }\n };\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n SVGElement.prototype.updateTransform = function () {\n var _a = this,\n element = _a.element,\n matrix = _a.matrix,\n _b = _a.rotation,\n rotation = _b === void 0 ? 0 : _b,\n scaleX = _a.scaleX,\n scaleY = _a.scaleY,\n _c = _a.translateX,\n translateX = _c === void 0 ? 0 : _c,\n _d = _a.translateY,\n translateY = _d === void 0 ? 0 : _d;\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n var transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // Apply rotation\n if (rotation) { // text rotation or inverted chart\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length && !(this.text || this).textPath) {\n element.setAttribute('transform', transform.join(' '));\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype.visibilitySetter = function (value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n SVGElement.prototype.xGetter = function (key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n };\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n SVGElement.prototype.zIndexSetter = function (value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n element = this.element,\n svgParent = parentNode === renderer.box;\n var childNodes,\n otherElement,\n otherZIndex,\n inserted = false,\n undefinedOtherZIndex,\n run = this.added,\n i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // , then we don't want to put items before \n // or \n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1] || null // null for oldIE export\n );\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0] || null // null for oldIE\n );\n inserted = true;\n }\n }\n return inserted;\n };\n return SVGElement;\n }());\n // Some shared setters and getters\n SVGElement.prototype.strokeSetter = SVGElement.prototype.fillSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dx\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dy\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n var defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType) {\n if (rendererType === void 0) { rendererType = defaultRenderer; }\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n var SVGLabel = /** @class */ (function (_super) {\n __extends(SVGLabel, _super);\n /* *\n *\n * Constructor\n *\n * */\n function SVGLabel(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n var _this = _super.call(this) || this;\n _this.paddingLeftSetter = _this.paddingSetter;\n _this.paddingRightSetter = _this.paddingSetter;\n _this.init(renderer, 'g');\n _this.textStr = str;\n _this.x = x;\n _this.y = y;\n _this.anchorX = anchorX;\n _this.anchorY = anchorY;\n _this.baseline = baseline;\n _this.className = className;\n _this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n _this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n _this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n var hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || _this.renderer.symbols[shape]) {\n _this.symbolKey = shape;\n }\n }\n _this.bBox = SVGLabel.emptyBBox;\n _this.padding = 3;\n _this.baselineOffset = 0;\n _this.needsBox = renderer.styledMode || hasBGImage;\n _this.deferredAttr = {};\n _this.alignFactor = 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n SVGLabel.prototype.alignSetter = function (value) {\n var alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n };\n SVGLabel.prototype.anchorXSetter = function (value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n };\n SVGLabel.prototype.anchorYSetter = function (value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n };\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n SVGLabel.prototype.boxAttr = function (key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n };\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n SVGLabel.prototype.css = function (styles) {\n if (styles) {\n var textStyles_1 = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach(function (prop) {\n if (typeof styles[prop] !== 'undefined') {\n textStyles_1[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles_1);\n // Update existing text, box (#9400, #12163, #18212)\n if ('fontSize' in textStyles_1 || 'fontWeight' in textStyles_1) {\n this.updateTextPadding();\n }\n else if ('width' in textStyles_1 || 'textOverflow' in textStyles_1) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n };\n /*\n * Destroy and release memory.\n */\n SVGLabel.prototype.destroy = function () {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n };\n SVGLabel.prototype.fillSetter = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n };\n /*\n * Return the bounding box of the box, not the group.\n */\n SVGLabel.prototype.getBBox = function () {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n };\n SVGLabel.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n };\n SVGLabel.prototype.heightSetter = function (value) {\n this.heightSetting = value;\n };\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n SVGLabel.prototype.onAdd = function () {\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: pick(this.textStr, ''),\n x: this.x || 0,\n y: this.y || 0\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n };\n SVGLabel.prototype.paddingSetter = function (value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n };\n SVGLabel.prototype.rSetter = function (value, key) {\n this.boxAttr(key, value);\n };\n SVGLabel.prototype.shadow = function (b) {\n if (b && !this.renderer.styledMode) {\n this.updateBoxSize();\n if (this.box) {\n this.box.shadow(b);\n }\n }\n return this;\n };\n SVGLabel.prototype.strokeSetter = function (value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['stroke-widthSetter'] = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['text-alignSetter'] = function (value) {\n this.textAlign = value;\n };\n SVGLabel.prototype.textSetter = function (text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text: text });\n }\n this.updateTextPadding();\n };\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n SVGLabel.prototype.updateBoxSize = function () {\n var text = this.text,\n style = text.element.style,\n attribs = {},\n padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(text.textStr)) ?\n text.getBBox() :\n SVGLabel.emptyBBox);\n var crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n var metrics = this.renderer.fontMetrics(style && style.fontSize,\n text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox && !text.textPath) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n var box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n };\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n SVGLabel.prototype.updateTextPadding = function () {\n var text = this.text;\n if (!text.textPath) {\n this.updateBoxSize();\n // Determine y based on the baseline\n var textY = this.baseline ? 0 : this.baselineOffset;\n var textX = pick(this.paddingLeft,\n this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n }\n };\n SVGLabel.prototype.widthSetter = function (value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n };\n SVGLabel.prototype.getPaddedWidth = function () {\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n var paddingRight = pick(this.paddingRight,\n padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n };\n SVGLabel.prototype.xSetter = function (value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n };\n SVGLabel.prototype.ySetter = function (value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n };\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'width'\n ];\n return SVGLabel;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(x, y, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = pick(options.r,\n w),\n ry = pick(options.r,\n h || w),\n proximity = 0.001,\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity,\n innerRadius = options.innerR,\n open_1 = pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n arc.push([\n 'M',\n x + rx * cosStart,\n y + ry * sinStart\n ], [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n x + rx * cosEnd,\n y + ry * sinEnd\n ]);\n if (defined(innerRadius)) {\n arc.push(open_1 ?\n [\n 'M',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ] : [\n 'L',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ], [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n x + innerRadius * cosStart,\n y + innerRadius * sinStart\n ]);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips, also used for rounded\n * rectangles in VML\n */\n function callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n var r = (options && options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['C', x + w, y, x + w, y, x + w, y + r],\n ['L', x + w, y + h - r],\n ['C', x + w, y + h, x + w, y + h, x + w - r, y + h],\n ['L', x + r, y + h],\n ['C', x, y + h, x, y + h, x, y + h - r],\n ['L', x, y + r],\n ['C', x, y, x, y, x + r, y] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n var Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var doc = H.doc,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isString = U.isString,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n var TextBuilder = /** @class */ (function () {\n function TextBuilder(svgElement) {\n var textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n this.fontSize = textStyles && textStyles.fontSize;\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n TextBuilder.prototype.buildSVG = function () {\n var wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = this.width && !wrapper.added && renderer.box, regexMatchBreaks = //g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n this.fontSize,\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (var i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n !wrapper.textPath &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n var ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(textNode);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n };\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n TextBuilder.prototype.modifyDOM = function () {\n var _this = this;\n var wrapper = this.svgElement;\n var x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n var firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), function (br, i) {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(void 0, br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: _this.getLineHeight(br.nextSibling),\n x: x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n var width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n var modifyTextNode = function (textNode,\n parentElement) {\n var text = textNode.textContent || '';\n var words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n var hasWhiteSpace = !_this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n var dy = _this.getLineHeight(parentElement);\n var lineNo = 0;\n var startAt = wrapper.actualWidth;\n if (_this.ellipsis) {\n if (text) {\n _this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - parseInt(_this.fontSize || 12, 10)), \n // Build the text to test for\n function (text, currentIndex) {\n return text.substring(0, currentIndex) + '\\u2026';\n });\n }\n }\n else if (hasWhiteSpace) {\n var lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n var precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !_this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n _this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n function (t, currentIndex) {\n return words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-');\n });\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach(function (childNode) {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach(function (line) {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy: dy, x: x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n var modifyChildren = (function (node) {\n var childNodes = [].slice.call(node.childNodes);\n childNodes.forEach(function (childNode) {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n };\n /**\n * Get the rendered line height of a , or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n TextBuilder.prototype.getLineHeight = function (node) {\n var fontSizeStyle;\n // If the node is a text node, use its parent\n var element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n if (!this.renderer.styledMode) {\n fontSizeStyle =\n element && /(px|em)$/.test(element.style.fontSize) ?\n element.style.fontSize :\n (this.fontSize || this.renderer.style.fontSize || 12);\n }\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(fontSizeStyle, element || this.svgElement.element).h;\n };\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n TextBuilder.prototype.modifyTree = function (nodes) {\n var _this = this;\n var modifyChild = function (node,\n i) {\n var _a = node.attributes,\n attributes = _a === void 0 ? {} : _a,\n children = node.children,\n _b = node.style,\n style = _b === void 0 ? {} : _b,\n tagName = node.tagName,\n styledMode = _this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-strong';\n }\n else {\n style.fontWeight = 'bold';\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-emphasized';\n }\n else {\n style.fontStyle = 'italic';\n }\n }\n // Modify styling\n if (style && style.color) {\n style.fill = style.color;\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n var nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some(function (child) { return child.tagName === '#text'; })) {\n node.children = [{ children: children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n extend(node, { attributes: attributes, style: style });\n // Recurse\n if (children) {\n children\n .filter(function (c) { return c.tagName !== '#text'; })\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n fireEvent(this.svgElement, 'afterModifyTree', { nodes: nodes });\n };\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n TextBuilder.prototype.truncate = function (textNode, text, words, startAt, width, getString) {\n var svgElement = this.svgElement;\n var renderer = svgElement.renderer,\n rotation = svgElement.rotation;\n // Cache the lengths to avoid checking the same twice\n var lengths = [];\n // Word wrap cannot be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n var minIndex = words ? 1 : 0;\n var maxIndex = (text || words || '').length;\n var currentIndex = maxIndex;\n var str;\n var actualWidth;\n var getSubStringLength = function (charEnd,\n concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n var end = concatenatedEnd || charEnd;\n var parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n // Legacy\n }\n else if (renderer.getSpanWidth) { // #9058 jsdom\n textNode.textContent = getString(text || words, charEnd);\n lengths[end] = startAt +\n renderer.getSpanWidth(svgElement, textNode);\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n };\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array} [except] Exceptions\n *\n * @return {string} The processed string\n */\n TextBuilder.prototype.unescapeEntities = function (inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n };\n return TextBuilder;\n }());\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n deg2rad = H.deg2rad,\n doc = H.doc,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n noop = H.noop,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Variables\n *\n * */\n var hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers. Through the VMLRenderer, part of the `oldie.js`\n * module, it also brings vector graphics to IE <= 8.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n var SVGRenderer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function SVGRenderer(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.isSVG = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n SVGRenderer.prototype.init = function (container, width, height, style, forExport, allowHTML, styledMode) {\n var renderer = this,\n boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }),\n element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n // object properties\n renderer.isSVG = true;\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n var desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.3.3'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n var subPixelFix,\n rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n };\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n SVGRenderer.prototype.definition = function (def) {\n var ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n };\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n SVGRenderer.prototype.getReferenceURL = function () {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n var id = uniqueKey();\n var ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id: id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': \"url(#\".concat(id, \")\"),\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n var svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n var hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n };\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n SVGRenderer.prototype.getStyle = function (style) {\n this.style = extend({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", ' +\n 'Arial, Helvetica, sans-serif',\n fontSize: '12px'\n }, style);\n return this.style;\n };\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n SVGRenderer.prototype.setStyle = function (style) {\n this.boxWrapper.css(this.getStyle(style));\n };\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n SVGRenderer.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n SVGRenderer.prototype.destroy = function () {\n var renderer = this,\n rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n // Defs are null in VMLRenderer\n // Otherwise, destroy them here.\n if (rendererDefs) {\n renderer.defs = rendererDefs.destroy();\n }\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n };\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n SVGRenderer.prototype.createElement = function (nodeName) {\n var wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n };\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n SVGRenderer.prototype.getRadialAttr = function (radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n };\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n SVGRenderer.prototype.buildText = function (wrapper) {\n new TextBuilder(wrapper).buildSVG();\n };\n /**\n * Returns white for dark colors and black for bright colors, based on W3C's\n * definition of [Relative luminance](\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance).\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} color\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n SVGRenderer.prototype.getContrast = function (color) {\n // #6216, #17273\n var rgba = Color.parse(color).rgba\n .map(function (b8) {\n var c = b8 / 255;\n return c <= 0.03928 ?\n c / 12.92 :\n Math.pow((c + 0.055) / 1.055, 2.4);\n });\n // Relative luminance\n var l = 0.2126 * rgba[0] + 0.7152 * rgba[1] + 0.0722 * rgba[2];\n // Use white or black based on which provides more contrast\n return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';\n };\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [selectState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n SVGRenderer.prototype.button = function (text, x, y, callback, theme, hoverState, selectState, disabledState, shape, useHTML) {\n if (theme === void 0) { theme = {}; }\n var label = this.label(text,\n x,\n y,\n shape,\n void 0,\n void 0,\n useHTML,\n void 0, 'button'),\n styledMode = this.styledMode,\n states = theme.states || {};\n var curState = 0;\n theme = merge(theme);\n delete theme.states;\n var normalStyle = merge({\n color: \"#333333\" /* Palette.neutralColor80 */,\n cursor: 'pointer',\n fontWeight: 'normal'\n },\n theme.style);\n delete theme.style;\n // Remove stylable attributes. Pass in the ButtonThemeObject and get the\n // SVGAttributes subset back.\n var normalState = AST.filterUserAttributes(theme);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational. The string type is a mistake, it is just for\n // compliance with SVGAttribute and is not used in button theme.\n var hoverStyle,\n selectStyle,\n disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* Palette.neutralColor3 */,\n stroke: \"#cccccc\" /* Palette.neutralColor20 */,\n 'stroke-width': 1\n }, normalState);\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* Palette.neutralColor10 */\n }, AST.filterUserAttributes(hoverState || states.hover || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n selectState = merge(normalState, {\n fill: \"#e6ebf5\" /* Palette.highlightColor10 */,\n style: {\n color: \"#000000\" /* Palette.neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(selectState || states.select || {}));\n selectStyle = selectState.style;\n delete selectState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || states.disabled || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to function\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n selectState,\n disabledState\n ][state || 0]);\n var css_1 = [\n normalStyle,\n hoverStyle,\n selectStyle,\n disabledStyle\n ][state || 0];\n if (isObject(css_1)) {\n label.css(css_1);\n }\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n // HTML labels don't need to handle pointer events because click and\n // mouseenter/mouseleave is bound to the underlying element.\n // Should this be reconsidered, we need more complex logic to share\n // events between the and its
counterpart, and avoid\n // triggering mouseenter/mouseleave when hovering from one to the\n // other (#17440).\n if (useHTML) {\n label.text.css({ pointerEvents: 'none' });\n }\n }\n return label\n .on('touchstart', function (e) { return e.stopPropagation(); })\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n };\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n SVGRenderer.prototype.crispLine = function (points, width, roundingFunction) {\n if (roundingFunction === void 0) { roundingFunction = 'round'; }\n var start = points[0];\n var end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n };\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.path = function (path) {\n var attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n };\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.circle = function (x, y, r) {\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n };\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.arc = function (x, y, r, innerR, start, end) {\n var options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR: innerR, start: start, end: end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n var arc = this.symbol('arc',\n x,\n y,\n r,\n r,\n options);\n arc.r = r; // #959\n return arc;\n };\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.rect = function (x, y, width, height, r, strokeWidth) {\n r = isObject(x) ? x.r : r;\n var wrapper = this.createElement('rect');\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x: x,\n y: y,\n width: Math.max(width, 0),\n height: Math.max(height, 0)\n });\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n attribs = wrapper.crisp(attribs);\n }\n attribs.fill = 'none';\n }\n if (r) {\n attribs.r = r;\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n };\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial} [animate=true]\n * Whether and how to animate.\n */\n SVGRenderer.prototype.setSize = function (width, height, animate) {\n var renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n };\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.g = function (name) {\n var elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n };\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.image = function (src, x, y, width, height, onload) {\n var attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n var elemWrapper = this.createElement('image').attr(attribs),\n onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element,\n src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n var dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n };\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n SVGRenderer.prototype.symbol = function (symbol, x, y, width, height, options) {\n var ren = this,\n imageRegex = /^url\\((.*?)\\)$/,\n isImage = imageRegex.test(symbol),\n sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n var obj,\n path,\n imageSrc,\n centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n var img_1 = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img_1.imgwidth = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].width, options && options.width);\n img_1.imgheight = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].height, options && options.height);\n /**\n * Set the size and position\n */\n centerImage = function (obj) { return obj.attr({\n width: obj.width,\n height: obj.height\n }); };\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img_1[key + 'Setter'] = function (value, key) {\n this[key] = value;\n var _a = this,\n alignByTranslate = _a.alignByTranslate,\n element = _a.element,\n width = _a.width,\n height = _a.height,\n imgwidth = _a.imgwidth,\n imgheight = _a.imgheight;\n var imgSize = this['img' + key];\n if (defined(imgSize)) {\n var scale = 1;\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n width &&\n height) {\n scale = Math.min(width / imgwidth, height / imgheight);\n imgSize = Math.round(imgSize * scale);\n // Update both width and height to keep the ratio\n // correct (#17315)\n attr(element, {\n width: Math.round(imgwidth * scale),\n height: Math.round(imgheight * scale)\n });\n }\n else if (element) {\n element.setAttribute(key, imgSize);\n }\n if (!alignByTranslate) {\n this.translate(((width || 0) - (imgSize * scale)) / 2, ((height || 0) - (imgSize * scale)) / 2);\n }\n }\n };\n });\n if (defined(x)) {\n img_1.attr({\n x: x,\n y: y\n });\n }\n img_1.isImg = true;\n if (defined(img_1.imgwidth) && defined(img_1.imgheight)) {\n centerImage(img_1);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img_1.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n var chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img_1.imgwidth = this.width;\n img_1.imgheight = this.height;\n if (img_1.element) {\n centerImage(img_1);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n };\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n SVGRenderer.prototype.clipRect = function (x, y, width, height) {\n var \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n };\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n SVGRenderer.prototype.text = function (str, x, y, useHTML) {\n var renderer = this,\n attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n var wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n var tspans = element.getElementsByTagName('tspan'),\n parentVal = element.getAttribute(key);\n for (var i = 0, tspan = void 0; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n };\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {number|string} [fontSize]\n * The current font size to inspect. If not given, the font size\n * will be found from the DOM element.\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement} [elem]\n * The element to inspect for a current font size.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n SVGRenderer.prototype.fontMetrics = function (fontSize, elem) {\n if ((this.styledMode || !/px/.test(fontSize)) &&\n (win.getComputedStyle) // old IE doesn't support it\n ) {\n fontSize = elem && SVGElement.prototype.getStyle.call(elem, 'font-size');\n }\n else {\n fontSize = fontSize ||\n // When the elem is a DOM element (#5932)\n (elem && elem.style && elem.style.fontSize) ||\n // Fall back on the renderer style default\n (this.style && this.style.fontSize);\n }\n // Handle different units\n if (/px/.test(fontSize)) {\n fontSize = pInt(fontSize);\n }\n else {\n fontSize = 12;\n }\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n var lineHeight = (fontSize < 24 ?\n fontSize + 3 :\n Math.round(fontSize * 1.2)),\n baseline = Math.round(lineHeight * 0.8);\n return {\n h: lineHeight,\n b: baseline,\n f: fontSize\n };\n };\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n SVGRenderer.prototype.rotCorr = function (baseline, rotation, alterY) {\n var y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n };\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n SVGRenderer.prototype.pathToSegments = function (path) {\n var ret = [];\n var segment = [];\n var commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (var i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n };\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n SVGRenderer.prototype.label = function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n };\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n SVGRenderer.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (el) { return el.align(); });\n };\n return SVGRenderer;\n }());\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class. The VMLRenderer\n * will have a pointer to VMLElement here.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS: SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array|Array|Array|Array|Array|Array)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n win = H.win;\n var css = U.css,\n defined = U.defined,\n extend = U.extend,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n var HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n function HTMLElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n HTMLElement.compose = function (SVGElementClass) {\n if (HTMLElement.composedClasses.indexOf(SVGElementClass) === -1) {\n HTMLElement.composedClasses.push(SVGElementClass);\n var htmlElementProto = HTMLElement.prototype,\n svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n HTMLElement.prototype.getSpanCorrection = function (width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n };\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering and\n * by the VML renderer\n * @private\n */\n HTMLElement.prototype.htmlCss = function (styles) {\n var wrapper = this,\n element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles),\n textWidth = pick(isSettingWidth && styles.width,\n void 0);\n var doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n /**\n * VML and useHTML method for calculating the bounding box based on offsets.\n */\n HTMLElement.prototype.htmlGetBBox = function () {\n var wrapper = this,\n element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n };\n /**\n * VML override private method to update elements based on internal\n * properties based on SVG transform.\n * @private\n */\n HTMLElement.prototype.htmlUpdateTransform = function () {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n var wrapper = this,\n renderer = wrapper.renderer,\n elem = wrapper.element,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n x = wrapper.x || 0,\n y = wrapper.y || 0,\n align = wrapper.textAlign || 'left',\n alignCorrection = {\n left: 0,\n center: 0.5,\n right: 1\n }[align],\n styles = wrapper.styles,\n whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip\n wrapper.shadows.forEach(function (shadow) {\n css(shadow, {\n marginLeft: translateX + 1,\n marginTop: translateY + 1\n });\n });\n }\n // apply inversion\n if (wrapper.inverted) { // wrapper is a group\n [].forEach.call(elem.childNodes, function (child) {\n renderer.invertChild(child, elem);\n });\n }\n if (elem.tagName === 'SPAN') {\n var rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n var baseline = void 0,\n hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n var textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n };\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n HTMLElement.prototype.setSpanRotation = function (rotation, alignCorrection, baseline) {\n var getTransformKey = function () { return (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0); };\n var rotationStyle = {},\n cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLElement.composedClasses = [];\n return HTMLElement;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var attr = U.attr,\n createElement = U.createElement,\n extend = U.extend,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n var HTMLRenderer = /** @class */ (function (_super) {\n __extends(HTMLRenderer, _super);\n function HTMLRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n HTMLRenderer.compose = function (SVGRendererClass) {\n if (HTMLRenderer.composedClasses.indexOf(SVGRendererClass) === -1) {\n HTMLRenderer.composedClasses.push(SVGRendererClass);\n var htmlRendererProto = HTMLRenderer.prototype,\n svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the VML renderer as well as the\n * SVG renderer through the useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n HTMLRenderer.prototype.html = function (str, x, y) {\n var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n var styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n // Add setters for the element itself (#4938)\n if (isSVG) { // #4938, only for HTML within SVG\n addSetters(wrapper, wrapper.element.style);\n }\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method. Same as VML.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n // This is specific for HTML within SVG\n if (isSVG) {\n wrapper.add = function (svgGroupWrapper) {\n var container = renderer.box.parentNode,\n parents = [];\n var htmlGroup,\n parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n var cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n var parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n cursor: parentGroupStyles.cursor,\n pointerEvents: (\n // #5595\n parentGroupStyles.pointerEvents),\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n var htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n // Shared with VML:\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n }\n return wrapper;\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLRenderer.composedClasses = [];\n return HTMLRenderer;\n }(SVGRenderer));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes, with y axis label\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * Polar charts only. The label's pixel distance from the perimeter\n * of the plot area.\n *\n * @type {number}\n * @default undefined\n * @product highcharts gantt\n */\n distance: void 0,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n * @default {highcharts|highstock|gantt} true\n * @default {highmaps} false\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: 0,\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. The default makes it adapt to the font\n * size of the bottom axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '11px'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. Unless\n * [minorTickInterval](#xAxis.minorTickInterval) is set, the tick\n * interval is calculated as a fifth of the `tickInterval`.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter approximately 5 minor ticks between\n * each major tick.\n *\n * Prior to v6.0.0, ticks were unabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts}\n * On axes using [categories](#xAxis.categories), minor ticks are not\n * supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/\n * Enabled on linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @type {boolean}\n * @default undefined\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n lineColor: \"#ccd6eb\" /* Palette.highlightColor20 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n tickColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * Gauge with stops\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @type {Array>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n /**\n * Whether to show the last tick label.\n *\n * @productdesc {highcharts|gantt}\n * Defaults to `true` on cartesian charts, and `false` on polar charts.\n *\n * @productdesc {highstock}\n * Defaults to `true` for categorized yAxis and `false` for other types\n * of yAxis.\n *\n * @default undefined\n */\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * Angular gauges and solid gauges only.\n * The label's pixel distance from the perimeter of the plot area.\n *\n * Since v7.1.2: If it's a percentage string, it is interpreted the\n * same as [series.radius](#plotOptions.gauge.radius), so label can be\n * aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Labels centered under the arc\n *\n * @type {number|string}\n * @default -25\n * @product highcharts\n * @apioption yAxis.labels.distance\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @see [yAxis.labels.distance](#yAxis.labels.distance)\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highstock} right\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: -8\n },\n /**\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @type {Highcharts.ColorType}\n * @apioption yAxis.lineColor\n */\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n var numberFormatter = this.axis.chart.numberFormatter;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total || 0, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n isFunction = U.isFunction,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event);\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n var Tick = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tick(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n Tick.prototype.addLabel = function () {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n chart = axis.chart,\n categories = axis.categories,\n log = axis.logarithmic,\n names = axis.names,\n pos = tick.pos,\n labelOptions = pick(tick.options && tick.options.labels,\n options.labels),\n tickPositions = axis.tickPositions,\n isFirst = pos === tickPositions[0],\n isLast = pos === tickPositions[tickPositions.length - 1],\n animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1,\n tickPositionInfo = tickPositions.info;\n var label = tick.label,\n dateTimeLabelFormat,\n dateTimeLabelFormats,\n i;\n // The context value\n var value = this.parameters.category || (categories ?\n pick(categories[pos],\n names[pos],\n pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, options.dateTimeLabelFormats ||\n {});\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n var ctx = {\n axis: axis,\n chart: chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst: isFirst,\n isLast: isLast,\n pos: pos,\n tick: tick,\n tickPositionInfo: tickPositionInfo,\n value: value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n var labelFormatter = function (ctx) {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx,\n ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx, ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n var str = labelFormatter.call(ctx,\n ctx);\n // Set up conditional formatting based on the format list if existing.\n var list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n };\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n Tick.prototype.createLabel = function (xy, str, labelOptions) {\n var axis = this.axis,\n chart = axis.chart,\n label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str,\n xy.x,\n xy.y,\n labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n };\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n Tick.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n Tick.prototype.getPosition = function (horiz, tickPos, tickmarkOffset, old) {\n var axis = this.axis,\n chart = axis.chart,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n };\n /**\n * Get the x, y position of the tick label\n * @private\n */\n Tick.prototype.getLabelPosition = function (x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var axis = this.axis,\n transA = axis.transA,\n reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed),\n staggerLines = axis.staggerLines,\n rotCorr = axis.tickRotCorr || { x: 0,\n y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0),\n pos = {};\n var yOffset,\n line;\n if (axis.side === 0) {\n yOffset = label.rotation ? -8 : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + 8;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n if (defined(labelOptions.y)) {\n yOffset = axis.side === 0 && axis.horiz ?\n labelOptions.y + yOffset :\n labelOptions.y;\n }\n x = x +\n labelOptions.x +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n };\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n Tick.prototype.getLabelSize = function () {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n };\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n Tick.prototype.getMarkPath = function (x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n };\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n Tick.prototype.handleOverflow = function (xy) {\n var tick = this,\n axis = this.axis,\n labelOptions = axis.options.labels,\n pxPos = xy.x,\n chartWidth = axis.chart.chartWidth,\n spacing = axis.chart.spacing,\n leftBound = pick(axis.labelLeft,\n Math.min(axis.pos,\n spacing[3])),\n rightBound = pick(axis.labelRight,\n Math.max(!axis.isRadial ? axis.pos + axis.len : 0,\n chartWidth - spacing[1])),\n label = this.label,\n rotation = this.rotation,\n factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')],\n labelWidth = label.getBBox().width,\n slotWidth = axis.getSlotWidth(tick),\n xCorrection = factor,\n css = {};\n var modifiedSlotWidth = slotWidth,\n goRight = 1,\n leftPos,\n rightPos,\n textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n };\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n Tick.prototype.moveLabel = function (str, labelOptions) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var moved = false,\n labelPos,\n xPos,\n yPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n xPos = axis.horiz ?\n (reversed ? 0 : axis.width + axis.left) : labelPos.x;\n yPos = axis.horiz ?\n labelPos.y : (reversed ? (axis.width + axis.left) : 0);\n tick.movedLabel = tick.createLabel({ x: xPos, y: yPos }, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n };\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n Tick.prototype.render = function (index, old, opacity) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n pos = tick.pos,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n xy = tick.getPosition(horiz,\n pos,\n tickmarkOffset,\n old),\n x = xy.x,\n y = xy.y,\n reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n var labelOpacity = pick(opacity,\n tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderGridLine = function (old, opacity, reverseCrisp) {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n attribs = {},\n pos = tick.pos,\n type = tick.type,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n renderer = axis.chart.renderer;\n var gridLine = tick.gridLine,\n gridLinePath,\n gridLineWidth = options.gridLineWidth,\n gridLineColor = options.gridLineColor,\n dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old,\n acrossPanes: false // #18025\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n };\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderMark = function (xy, opacity, reverseCrisp) {\n var tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n var mark = tick.mark;\n var isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n };\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n Tick.prototype.renderLabel = function (xy, old, opacity, index) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n options = axis.options,\n label = tick.label,\n labelOptions = options.labels,\n step = labelOptions.step,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n x = xy.x,\n y = xy.y;\n var show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy).show(true);\n tick.isNewLabel = false;\n }\n else {\n label.hide(); // #1338, #15863\n tick.isNewLabel = true;\n }\n }\n };\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n Tick.prototype.replaceMovedLabel = function () {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var x,\n y;\n // Animate and destroy\n if (label && !tick.isNew) {\n x = axis.horiz ? (reversed ? axis.left : axis.width + axis.left) : label.xy.x;\n y = axis.horiz ?\n label.xy.y :\n (reversed ? axis.width + axis.top : axis.top);\n label.animate({ x: x, y: y, opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n };\n return Tick;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var deg2rad = H.deg2rad;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n normalizeTickInterval = U.normalizeTickInterval,\n objectEach = U.objectEach,\n pick = U.pick,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n var getNormalizedTickInterval = function (axis,\n tickInterval) { return normalizeTickInterval(tickInterval,\n void 0,\n void 0,\n pick(axis.options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid decimals, as\n // linear axes are often used to render discrete values (#3363). If\n // a tick amount is set, allow decimals by default, as it increases\n // the chances for a good fit.\n tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount); };\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n var Axis = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Axis(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n Axis.prototype.init = function (chart, userOptions) {\n var isXAxis = userOptions.isX,\n axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n var options = this.options,\n labelsOptions = options.labels,\n type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array}\n * @readonly\n */\n axis.categories = options.categories || (axis.hasNames ? [] : void 0);\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n var crosshair = pick(options.crosshair,\n splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n };\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n Axis.prototype.setOptions = function (userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n };\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n Axis.prototype.defaultLabelFormatter = function (ctx) {\n var axis = this.axis,\n chart = this.chart,\n numberFormatter = chart.numberFormatter,\n value = isNumber(this.value) ? this.value : NaN,\n time = axis.chart.time,\n categories = axis.categories,\n dateTimeLabelFormat = this.dateTimeLabelFormat,\n lang = defaultOptions.lang,\n numericSymbols = lang.numericSymbols,\n numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n var i = numericSymbols && numericSymbols.length,\n multi,\n ret;\n if (categories) {\n ret = \"\".concat(this.value);\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n };\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n Axis.prototype.getSeriesExtremes = function () {\n var axis = this,\n chart = axis.chart;\n var xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n // Loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n var seriesOptions = series.options;\n var xData = void 0,\n threshold = seriesOptions.threshold,\n seriesDataMin = void 0,\n seriesDataMax = void 0;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData.length) {\n xData = axis.logarithmic ?\n xData.filter(axis.validatePositiveValue) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n var dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n };\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n Axis.prototype.translate = function (val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n var axis = (this.linkedParent || this), // #1417\n localMin = (old && axis.old ? axis.old.min : axis.min);\n if (!isNumber(localMin)) {\n return NaN;\n }\n var minPixelPadding = axis.minPixelPadding,\n doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n var sign = 1,\n cvsOffset = 0,\n localA = old && axis.old ? axis.old.transA : axis.transA,\n returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n var value = sign * (val - localMin) * localA;\n returnValue = (!axis.isRadial ? correctFloat(value) : value) +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ? localA * pointPlacement : 0);\n }\n return returnValue;\n };\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n Axis.prototype.toPixels = function (value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, void 0, true) +\n (paneCoordinates ? 0 : this.pos);\n };\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n Axis.prototype.toValue = function (pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, void 0, true);\n };\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n Axis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n chart = axis.chart,\n axisLeft = axis.left,\n axisTop = axis.top,\n old = options.old,\n value = options.value,\n lineWidth = options.lineWidth,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n cWidth = (old && chart.oldChartWidth) || chart.chartWidth,\n transB = axis.transB;\n var translatedValue = options.translatedValue,\n force = options.force,\n x1,\n y1,\n x2,\n y2,\n skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && (x < a || x > b)) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n var evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n };\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getLinearTickPositions = function (tickInterval, min, max) {\n var roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval),\n roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval),\n tickPositions = [];\n var pos,\n lastPos,\n precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n };\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n Axis.prototype.getMinorTickInterval = function () {\n var options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n };\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getMinorTickPositions = function () {\n var axis = this,\n options = axis.options,\n tickPositions = axis.tickPositions,\n minorTickInterval = axis.minorTickInterval,\n pointRangePadding = axis.pointRangePadding || 0,\n min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n var minorTickPositions = [],\n pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n var logarithmic_1 = axis.logarithmic;\n if (logarithmic_1) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic_1.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n };\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n Axis.prototype.adjustForMinRange = function () {\n var axis = this,\n options = axis.options,\n log = axis.logarithmic;\n var min = axis.min,\n max = axis.max,\n zoomOffset,\n spaceAvailable,\n closestDataRange = 0,\n i,\n distance,\n xData,\n loopLength,\n minArgs,\n maxArgs,\n minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n };\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n Axis.prototype.getClosest = function () {\n var ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n var seriesClosest = series.closestPointRange,\n visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n };\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n Axis.prototype.nameToX = function (point) {\n var explicitCategories = isArray(this.options.categories),\n names = explicitCategories ? this.categories : this.names;\n var nameX = point.options.x,\n x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames && names ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories && names) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n else if (point.x) {\n x = point.x; // #17438\n }\n return x;\n };\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n Axis.prototype.updateNames = function () {\n var axis = this,\n names = this.names,\n i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n var x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n };\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n Axis.prototype.setAxisTranslation = function () {\n var axis = this,\n range = axis.max - axis.min,\n linkedParent = axis.linkedParent,\n hasCategories = !!axis.categories,\n isXAxis = axis.isXAxis;\n var pointRange = axis.axisPointRange || 0,\n closestPointRange,\n minPointOffset = 0,\n pointRangePadding = 0,\n ordinalCorrection,\n transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n var seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange,\n closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n var isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n };\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n Axis.prototype.minFromRange = function () {\n var axis = this;\n return axis.max - axis.range;\n };\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n Axis.prototype.setTickInterval = function (secondPass) {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n options = axis.options,\n isXAxis = axis.isXAxis,\n isLinked = axis.isLinked,\n tickPixelIntervalOption = options.tickPixelInterval,\n categories = axis.categories,\n softThreshold = axis.softThreshold;\n var maxPadding = options.maxPadding,\n minPadding = options.minPadding,\n length,\n linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0,\n threshold = isNumber(axis.threshold) ? axis.threshold : null,\n thresholdMin,\n thresholdMax,\n hardMin,\n hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n var hasExtremesChanged_1 = axis.min !==\n (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtremesChanged_1);\n });\n // Then apply grouping if needed. The hasExtremesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtremesChanged: hasExtremesChanged_1 });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n var minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some(function (s) { return s.noSharedTooltip; }) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // For linear axes, normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = getNormalizedTickInterval(axis, axis.tickInterval);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n };\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n Axis.prototype.setTickPositions = function () {\n var axis = this,\n options = this.options,\n tickPositionsOption = options.tickPositions,\n tickPositioner = options.tickPositioner,\n minorTickIntervalOption = this.getMinorTickInterval(),\n hasVerticalPanning = this.hasVerticalPanning(),\n isColorAxis = this.coll === 'colorAxis',\n startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick),\n endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n var tickPositions = [],\n tickPositionerResult;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / 5 :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n if (tickPositionsOption) {\n // Find the tick positions. Work on a copy (#1565)\n tickPositions = tickPositionsOption.slice();\n }\n else if (isNumber(this.min) && isNumber(this.max)) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n var startingTickInterval = this.tickInterval;\n var adjustedTickInterval = startingTickInterval;\n while (adjustedTickInterval <= startingTickInterval * 2) {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n // If there are more tick positions than the set tickAmount,\n // increase the tickInterval and continue until it fits.\n // (#17100)\n if (this.tickAmount &&\n tickPositions.length > this.tickAmount) {\n this.tickInterval = getNormalizedTickInterval(this, adjustedTickInterval *= 1.1);\n }\n else {\n break;\n }\n }\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [\n tickPositions[0],\n tickPositions[tickPositions.length - 1]\n ];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n // Make it available to the positioner\n this.tickPositions = tickPositions;\n tickPositionerResult = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositionerResult) {\n tickPositions = tickPositionerResult;\n }\n }\n }\n this.tickPositions = tickPositions;\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked && isNumber(this.min) && isNumber(this.max)) {\n // Substract half a unit (#2619, #2846, #2515, #3390), but not in\n // case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some(function (s) {\n return (s.is('heatmap') && s.options.pointPlacement === 'between');\n })) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositionerResult) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n };\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n Axis.prototype.trimTicks = function (tickPositions, startOnTick, endOnTick) {\n var roundedMin = tickPositions[0],\n roundedMax = tickPositions[tickPositions.length - 1],\n minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n };\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n Axis.prototype.alignToOthers = function () {\n var axis = this,\n alignedAxes = [this],\n options = axis.options,\n alignThresholds = (this.coll === 'yAxis' &&\n this.chart.options.chart.alignThresholds),\n thresholdAlignments = [];\n var hasOther;\n axis.thresholdAlignment = void 0;\n if ((\n // Only if alignTicks or alignThresholds is true\n (this.chart.options.chart.alignTicks !== false &&\n options.alignTicks) || (alignThresholds)) &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n // Get a key identifying which pane the axis belongs to\n var getKey_1 = function (axis) {\n var horiz = axis.horiz,\n options = axis.options;\n return [\n horiz ? options.left : options.top,\n options.width,\n options.height,\n options.pane\n ].join(',');\n };\n var thisKey_1 = getKey_1(this);\n this.chart[this.coll].forEach(function (otherAxis) {\n var series = otherAxis.series;\n if (\n // #4442\n series.length &&\n series.some(function (s) { return s.visible; }) &&\n otherAxis !== axis &&\n getKey_1(otherAxis) === thisKey_1) {\n hasOther = true; // #4201\n alignedAxes.push(otherAxis);\n }\n });\n }\n if (hasOther && alignThresholds) {\n // Handle alignThresholds. The `thresholdAlignments` array keeps\n // records of where each axis in the group wants its threshold, from\n // 0 which is on `axis.min`, to 1 which is on `axis.max`.\n alignedAxes.forEach(function (otherAxis) {\n var threshAlign = otherAxis.getThresholdAlignment(axis);\n if (isNumber(threshAlign)) {\n thresholdAlignments.push(threshAlign);\n }\n });\n // For each of the axes in the group, record the average\n // `thresholdAlignment`.\n var thresholdAlignment_1 = thresholdAlignments.length > 1 ?\n thresholdAlignments.reduce(function (sum,\n n) { return (sum += n); }, 0) / thresholdAlignments.length :\n void 0;\n alignedAxes.forEach(function (axis) {\n axis.thresholdAlignment = thresholdAlignment_1;\n });\n }\n return hasOther;\n };\n /**\n * Where the axis wants its threshold, from 0 which is on `axis.min`, to 1 which\n * is on `axis.max`.\n *\n * @private\n * @function Highcharts.Axis#getThresholdAlignment\n */\n Axis.prototype.getThresholdAlignment = function (callerAxis) {\n if (!isNumber(this.dataMin) ||\n (this !== callerAxis &&\n this.series.some(function (s) { return (s.isDirty || s.isDirtyData); }))) {\n this.getSeriesExtremes();\n }\n if (isNumber(this.threshold)) {\n var thresholdAlignment = clamp(((this.threshold - (this.dataMin || 0)) /\n ((this.dataMax || 0) - (this.dataMin || 0))), 0, 1);\n if (this.options.reversed) {\n thresholdAlignment = 1 - thresholdAlignment;\n }\n return thresholdAlignment;\n }\n };\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n Axis.prototype.getTickAmount = function () {\n var axis = this,\n options = this.options,\n tickPixelInterval = options.tickPixelInterval;\n var tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n };\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n Axis.prototype.adjustTickAmount = function () {\n var axis = this,\n finalTickAmt = axis.finalTickAmt,\n max = axis.max,\n min = axis.min,\n options = axis.options,\n tickPositions = axis.tickPositions,\n tickAmount = axis.tickAmount,\n thresholdAlignment = axis.thresholdAlignment,\n currentTickAmount = tickPositions && tickPositions.length,\n threshold = pick(axis.threshold,\n axis.softThreshold ? 0 : null);\n var len,\n i,\n tickInterval = axis.tickInterval,\n thresholdTickIndex;\n var \n // Extend the tickPositions by appending a position\n append = function () { return tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval)); }, \n // Extend the tickPositions by prepending a position\n prepend = function () { return tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval)); };\n // If `thresholdAlignment` is a number, it means the `alignThresholds`\n // option is true. The `thresholdAlignment` is a scalar value between 0\n // and 1 for where the threshold should be relative to `axis.min` and\n // `axis.max`. Now that we know the tick amount, convert this to the\n // tick index. Unless `thresholdAlignment` is exactly 0 or 1, avoid the\n // first or last tick because that would lead to series being clipped.\n if (isNumber(thresholdAlignment)) {\n thresholdTickIndex = thresholdAlignment < 0.5 ?\n Math.ceil(thresholdAlignment * (tickAmount - 1)) :\n Math.floor(thresholdAlignment * (tickAmount - 1));\n if (options.reversed) {\n thresholdTickIndex = tickAmount - 1 - thresholdTickIndex;\n }\n }\n if (axis.hasData() && isNumber(min) && isNumber(max)) { // #14769\n // Adjust extremes and translation to the modified tick positions\n var adjustExtremes = function () {\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = options.startOnTick ?\n tickPositions[0] :\n Math.min(min, tickPositions[0]);\n axis.max = options.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(max, tickPositions[tickPositions.length - 1]);\n };\n // When the axis is subject to the alignThresholds option. Use\n // axis.threshold because the local threshold includes the\n // `softThreshold`.\n if (isNumber(thresholdTickIndex) && isNumber(axis.threshold)) {\n // Throw away the previously computed tickPositions and start\n // from scratch with only the threshold itself, then add ticks\n // below the threshold first, then fill up above the threshold.\n // If we are not able to fill up to axis.max, double the\n // tickInterval and run again.\n while (tickPositions[thresholdTickIndex] !== threshold ||\n tickPositions.length !== tickAmount ||\n tickPositions[0] > min ||\n tickPositions[tickPositions.length - 1] < max) {\n tickPositions.length = 0;\n tickPositions.push(axis.threshold);\n while (tickPositions.length < tickAmount) {\n if (\n // Start by prepending positions until the threshold\n // is at the required index...\n tickPositions[thresholdTickIndex] === void 0 ||\n tickPositions[thresholdTickIndex] > axis.threshold) {\n prepend();\n }\n else {\n // ... then append positions until we have the\n // required length\n append();\n }\n }\n // Safety vent\n if (tickInterval > axis.tickInterval * 8) {\n break;\n }\n tickInterval *= 2;\n }\n adjustExtremes();\n }\n else if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 || min === threshold) {\n append();\n }\n else {\n prepend();\n }\n }\n adjustExtremes();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n };\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n Axis.prototype.setScale = function () {\n var axis = this;\n var isDirtyData = false,\n isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n var isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n axis.stacking.buildStacks();\n }\n axis.forceRedraw = false;\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n };\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n Axis.prototype.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n var axis = this,\n chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n };\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n Axis.prototype.zoom = function (newMin, newMax) {\n var axis = this,\n dataMin = this.dataMin,\n dataMax = this.dataMax,\n options = this.options,\n min = Math.min(dataMin,\n pick(options.min,\n dataMin)),\n max = Math.max(dataMax,\n pick(options.max,\n dataMax)),\n evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n var newMin = e.newMin,\n newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n };\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n Axis.prototype.setAxisSize = function () {\n var chart = this.chart,\n options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0],\n horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width,\n chart.plotWidth - offsets[3] + offsets[1]),\n chart.plotWidth)),\n height = this.height = Math.round(relativeLength(pick(options.height,\n chart.plotHeight - offsets[0] + offsets[2]),\n chart.plotHeight)),\n top = this.top = Math.round(relativeLength(pick(options.top,\n chart.plotTop + offsets[0]),\n chart.plotHeight,\n chart.plotTop)),\n left = this.left = Math.round(relativeLength(pick(options.left,\n chart.plotLeft + offsets[3]),\n chart.plotWidth,\n chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n };\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n Axis.prototype.getExtremes = function () {\n var axis = this,\n log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n };\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n Axis.prototype.getThreshold = function (threshold) {\n var axis = this,\n log = axis.logarithmic,\n realMin = log ? log.lin2log(axis.min) : axis.min,\n realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n };\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n Axis.prototype.autoLabelAlign = function (rotation) {\n var angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360,\n evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n };\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array|undefined}\n * An array of tickLength and tickWidth\n */\n Axis.prototype.tickSize = function (prefix) {\n var options = this.options,\n tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n var tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'],\n tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n var e = { tickSize: tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n };\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n Axis.prototype.labelMetrics = function () {\n var index = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[index] && this.ticks[index].label);\n };\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n Axis.prototype.unsquish = function () {\n var labelOptions = this.options.labels,\n horiz = this.horiz,\n tickInterval = this.tickInterval,\n slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval),\n rotationOption = labelOptions.rotation,\n labelMetrics = this.labelMetrics(),\n range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n var step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n var newTickInterval = tickInterval,\n rotation,\n bestScore = Number.MAX_VALUE,\n autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n var step = void 0,\n score = void 0;\n // Loop over the given autoRotation options, and determine which\n // gives the best score. The best score is that with the lowest\n // number of steps and a rotation closest to horizontal.\n for (var _i = 0, autoRotation_1 = autoRotation; _i < autoRotation_1.length; _i++) {\n var rot = autoRotation_1[_i];\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(labelMetrics.h / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n }\n }\n }\n else { // #4411\n newTickInterval = getStep(labelMetrics.h);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return labelOptions.step ? tickInterval : newTickInterval;\n };\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n Axis.prototype.getSlotWidth = function (tick) {\n // #5086, #1580, #1931\n var chart = this.chart,\n horiz = this.horiz,\n labelOptions = this.options.labels,\n slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n var cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n };\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n Axis.prototype.renderUnsquish = function () {\n var chart = this.chart,\n renderer = chart.renderer,\n tickPositions = this.tickPositions,\n ticks = this.ticks,\n labelOptions = this.options.labels,\n labelStyleOptions = labelOptions.style,\n horiz = this.horiz,\n slotWidth = this.getSlotWidth(),\n innerWidth = Math.max(1,\n Math.round(slotWidth - 2 * labelOptions.padding)),\n attr = {},\n labelMetrics = this.labelMetrics(),\n textOverflowOption = labelStyleOptions.textOverflow;\n var commonWidth,\n commonTextOverflow,\n maxLabelLength = 0,\n label,\n i,\n pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n var tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos],\n label = tick && tick.label,\n widthOption = labelStyleOptions.width,\n css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n };\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n Axis.prototype.hasData = function () {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n };\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n Axis.prototype.addTitle = function (display) {\n var axis = this,\n renderer = axis.chart.renderer,\n horiz = axis.horiz,\n opposite = axis.opposite,\n options = axis.options,\n axisTitleOptions = options.title,\n styledMode = axis.chart.styledMode;\n var textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n };\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n Axis.prototype.generateTick = function (pos) {\n var axis = this,\n ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n };\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n Axis.prototype.getOffset = function () {\n var _this = this;\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n options = axis.options,\n side = axis.side,\n ticks = axis.ticks,\n tickPositions = axis.tickPositions,\n coll = axis.coll,\n axisParent = axis.axisParent // Used in color axis\n ,\n renderer = chart.renderer,\n invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side),\n hasData = axis.hasData(),\n axisTitleOptions = options.title,\n labelOptions = options.labels,\n axisOffset = chart.axisOffset,\n clipOffset = chart.clipOffset,\n directionFactor = [-1, 1, 1, -1][side],\n className = options.className;\n var showAxis,\n titleOffset = 0,\n titleOffsetOption,\n titleMargin = 0,\n labelOffset = 0, // reset\n labelOffsetPadded,\n lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n var createGroup = function (name, suffix, zIndex) { return renderer.g(name)\n .attr({ zIndex: zIndex })\n .addClass(\"highcharts-\".concat(coll.toLowerCase()).concat(suffix, \" \") +\n (_this.isRadial ? \"highcharts-radial-axis\".concat(suffix, \" \") : '') +\n (className || ''))\n .add(axisParent); };\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis && axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) :\n labelOptions.x);\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n var tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n var clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n };\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Axis.prototype.getLinePath = function (lineWidth) {\n var chart = this.chart,\n opposite = this.opposite,\n offset = this.offset,\n horiz = this.horiz,\n lineLeft = this.left + (opposite ? this.width : 0) + offset,\n lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n };\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n Axis.prototype.renderLine = function () {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n };\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n Axis.prototype.getTitlePosition = function () {\n // compute anchor points for each of the title align options\n var horiz = this.horiz,\n axisLeft = this.left,\n axisTop = this.top,\n axisLength = this.len,\n axisTitleOptions = this.options.title,\n margin = horiz ? axisLeft : axisTop,\n opposite = this.opposite,\n offset = this.offset,\n xOption = axisTitleOptions.x,\n yOption = axisTitleOptions.y,\n axisTitle = this.axisTitle,\n fontMetrics = this.chart.renderer.fontMetrics(axisTitleOptions.style.fontSize,\n axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = axisTitle ? Math.max(axisTitle.getBBox(false, 0).height - fontMetrics.h - 1, 0) : 0, \n // the position in the length direction of the axis\n alongAxis = ({\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n })[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n (this.axisTitleMargin || 0) +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side],\n titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n };\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderMinorTick = function (pos, slideIn) {\n var axis = this;\n var minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n };\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderTick = function (pos, i, slideIn) {\n var axis = this,\n isLinked = axis.isLinked,\n ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n };\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n Axis.prototype.render = function () {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n renderer = chart.renderer,\n options = axis.options,\n isLinked = axis.isLinked,\n tickPositions = axis.tickPositions,\n axisTitle = axis.axisTitle,\n ticks = axis.ticks,\n minorTicks = axis.minorTicks,\n alternateBands = axis.alternateBands,\n stackLabelOptions = options.stackLabels,\n alternateGridColor = options.alternateGridColor,\n tickmarkOffset = axis.tickmarkOffset,\n axisLine = axis.axisLine,\n showAxis = axis.showAxis,\n animation = animObject(renderer.globalAnimation);\n var from,\n to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n var slideInTicks_1 = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks_1);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks_1);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n var forDestruction = [],\n delay = animation.duration,\n destroyInactiveItems = function () {\n var i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n var titleXy = axis.getTitlePosition();\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](titleXy);\n axisTitle.isNew = false;\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n Axis.prototype.redraw = function () {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n };\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n Axis.prototype.getKeepProps = function () {\n return (this.keepProps || Axis.keepProps);\n };\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n Axis.prototype.destroy = function (keepEvents) {\n var axis = this,\n plotLinesAndBands = axis.plotLinesAndBands,\n eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n var i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (var plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n Axis.prototype.drawCrosshair = function (e, point) {\n var options = this.crosshair,\n snap = pick(options && options.snap,\n true),\n chart = this.chart;\n var path,\n pos,\n categorized,\n graphic = this.cross,\n crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd6eb\" /* Palette.highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* Palette.neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n };\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n Axis.prototype.hideCrosshair = function () {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n };\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n Axis.prototype.hasVerticalPanning = function () {\n var panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n };\n /**\n * Check whether the given value is a positive valid axis value.\n *\n * @private\n * @function Highcharts.Axis#validatePositiveValue\n *\n * @param {unknown} value\n * The axis value\n */\n Axis.prototype.validatePositiveValue = function (value) {\n return isNumber(value) && value > 0;\n };\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n Axis.prototype.update = function (options, redraw) {\n var chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n Axis.prototype.remove = function (redraw) {\n var chart = this.chart,\n key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n var i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n Axis.prototype.setTitle = function (titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n };\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n Axis.prototype.setCategories = function (categories, redraw) {\n this.update({ categories: categories }, redraw);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n return Axis;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Default formatting of date/time labels.\n * @name Highcharts.AxisLabelsFormatterContextObject#dateTimeLabelFormat\n * @type {string|undefined}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string|undefined}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n timeUnits = U.timeUnits;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('dateTime');\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n var units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1, 2]\n ],\n [\n 'week',\n [1, 2]\n ],\n [\n 'month',\n [1, 2, 3, 4, 6]\n ],\n [\n 'year',\n null\n ]]);\n var unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]],\n multiples = unit[1],\n i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n var lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n var count = normalizeTickInterval(tickInterval / interval,\n multiples,\n unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n };\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n var axis = this.axis,\n time = axis.chart.time;\n return axis.closestPointRange ?\n time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n // #2546, 2581\n time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n };\n return Additions;\n }());\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n var logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n var axis = this;\n var log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n Additions.prototype.getLogTickPositions = function (interval, min, max, minor) {\n var log = this;\n var axis = log.axis;\n var axisLength = axis.len;\n var options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n var positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n var roundedMin = Math.floor(min);\n var intermediate = void 0,\n i = void 0,\n j = void 0,\n len = void 0,\n pos = void 0,\n lastPos = void 0,\n break2 = void 0;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n var realMin = log.lin2log(min),\n realMax = log.lin2log(max),\n tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval,\n filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption,\n tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),\n totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval);\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n };\n Additions.prototype.lin2log = function (num) {\n return Math.pow(10, num);\n };\n Additions.prototype.log2lin = function (num) {\n return Math.log(num) / Math.LN10;\n };\n return Additions;\n }());\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var erase = U.erase,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n extend(AxisClass.prototype, Additions.prototype);\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /* *\n *\n * Classes\n *\n * */\n /**\n * Object with members for extending the Axis prototype.\n * @private\n */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Additions.prototype.getPlotBandPath = function (from, to, options) {\n if (options === void 0) { options = this.options; }\n var toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n var path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }),\n i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1,\n isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n var pathStart = path[i],\n pathEnd = path[i + 1],\n toPathStart = toPath[i],\n toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n };\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n Additions.prototype.addPlotBand = function (options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n };\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n Additions.prototype.addPlotLine = function (options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n };\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n Additions.prototype.addPlotBandOrLine = function (options, coll) {\n var _this = this;\n var userOptions = this.userOptions;\n var obj = new PlotLineOrBandClass(this,\n options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach(function (plotLineOptions) {\n _this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n var updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n };\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n Additions.prototype.removePlotBandOrLine = function (id) {\n var plotLinesAndBands = this.plotLinesAndBands,\n options = this.options,\n userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n var i_1 = plotLinesAndBands.length;\n while (i_1--) {\n if (plotLinesAndBands[i_1].id === id) {\n plotLinesAndBands[i_1].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i_1 = arr.length;\n while (i_1--) {\n if ((arr[i_1] || {}).id === id) {\n erase(arr, arr[i_1]);\n }\n }\n });\n }\n };\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n Additions.prototype.removePlotBand = function (id) {\n this.removePlotBandOrLine(id);\n };\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n Additions.prototype.removePlotLine = function (id) {\n this.removePlotBandOrLine(id);\n };\n return Additions;\n }());\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n fireEvent = U.fireEvent,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n var PlotLineOrBand = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PlotLineOrBand(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Static Functions\n *\n * */\n PlotLineOrBand.compose = function (AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n PlotLineOrBand.prototype.render = function () {\n fireEvent(this, 'render');\n var plotLine = this,\n axis = plotLine.axis,\n horiz = axis.horiz,\n log = axis.logarithmic,\n options = plotLine.options,\n color = options.color,\n zIndex = pick(options.zIndex, 0),\n events = options.events,\n groupAttribs = {},\n renderer = axis.chart.renderer;\n var optionsLabel = options.label,\n label = plotLine.label,\n to = options.to,\n from = options.from,\n value = options.value,\n svgElem = plotLine.svgElem,\n path = [],\n group;\n var isBand = defined(from) && defined(to),\n isLine = defined(value),\n isNew = !svgElem,\n attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n var groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* Palette.neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6ebf5\" /* Palette.highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElem\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show();\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n };\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n PlotLineOrBand.prototype.renderLabel = function (optionsLabel, path, isBand, zIndex) {\n var plotLine = this,\n axis = plotLine.axis,\n renderer = axis.chart.renderer;\n var label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex: zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n var xBounds = path.xBounds ||\n [path[0][1],\n path[1][1], (isBand ? path[2][1] : path[0][1])];\n var yBounds = path.yBounds ||\n [path[0][2],\n path[1][2], (isBand ? path[2][2] : path[0][2])];\n var x = arrayMin(xBounds);\n var y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x: x,\n y: y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n var width = optionsLabel.clip ?\n axis.width : axis.chart.chartWidth;\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n };\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n PlotLineOrBand.prototype.getLabelText = function (optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n };\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n PlotLineOrBand.prototype.destroy = function () {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n };\n return PlotLineOrBand;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6ebf5\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Whether to hide labels that are outside the plot area.\n *\n * @type {boolean}\n * @default false\n * @since 10.3.3\n * @apioption xAxis.plotLines.labels.clip\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var doc = H.doc;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n var Tooltip = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tooltip(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * In styled mode, apply the default filter for the tooltip drop-shadow. It\n * needs to have an id specific to the chart, otherwise there will be issues\n * when one tooltip adopts the filter of a different chart, specifically one\n * where the container is hidden.\n *\n * @private\n * @function Highcharts.Tooltip#applyFilter\n */\n Tooltip.prototype.applyFilter = function () {\n var chart = this.chart;\n chart.renderer.definition({\n tagName: 'filter',\n attributes: {\n id: 'drop-shadow-' + chart.index,\n opacity: 0.5\n },\n children: [{\n tagName: 'feGaussianBlur',\n attributes: {\n 'in': 'SourceAlpha',\n stdDeviation: 1\n }\n }, {\n tagName: 'feOffset',\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: 'feComponentTransfer',\n children: [{\n tagName: 'feFuncA',\n attributes: {\n type: 'linear',\n slope: 0.3\n }\n }]\n }, {\n tagName: 'feMerge',\n children: [{\n tagName: 'feMergeNode'\n }, {\n tagName: 'feMergeNode',\n attributes: {\n 'in': 'SourceGraphic'\n }\n }]\n }]\n });\n };\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n Tooltip.prototype.bodyFormatter = function (items) {\n return items.map(function (item) {\n var tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n };\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n Tooltip.prototype.cleanSplit = function (force) {\n this.chart.series.forEach(function (series) {\n var tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n };\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n *\n * @param {Highcharts.Tooltip} tooltip\n *\n * @return {string|Array}\n * Returns a string (single tooltip and shared)\n * or an array of strings (split tooltip)\n */\n Tooltip.prototype.defaultFormatter = function (tooltip) {\n var items = this.points || splat(this);\n var s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n };\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n Tooltip.prototype.destroy = function () {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split && this.tt) {\n this.cleanSplit(true);\n this.tt = this.tt.destroy();\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n };\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n Tooltip.prototype.getAnchor = function (points, mouseEvent) {\n var chart = this.chart,\n pointer = chart.pointer,\n inverted = chart.inverted,\n plotTop = chart.plotTop,\n plotLeft = chart.plotLeft;\n var ret;\n points = splat(points);\n // If reversedStacks are false the tooltip position should be taken from\n // the last point (#17948)\n if (points[0].series &&\n points[0].series.yAxis &&\n !points[0].series.yAxis.options.reversedStacks) {\n points = points.slice().reverse();\n }\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n var chartX_1 = 0,\n chartY_1 = 0;\n points.forEach(function (point) {\n var pos = point.pos(true);\n if (pos) {\n chartX_1 += pos[0];\n chartY_1 += pos[1];\n }\n });\n chartX_1 /= points.length;\n chartY_1 /= points.length;\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n chartX_1 = mouseEvent.chartX;\n }\n else {\n chartY_1 = mouseEvent.chartY;\n }\n }\n // Use the average position for multiple points\n ret = [chartX_1 - plotLeft, chartY_1 - plotTop];\n }\n return ret.map(Math.round);\n };\n /**\n * Get the CSS class names for the tooltip's label. Styles the label\n * by `colorIndex` or user-defined CSS.\n *\n * @function Highcharts.Tooltip#getClassName\n *\n * @return {string}\n * The class names.\n */\n Tooltip.prototype.getClassName = function (point, isSplit, isHeader) {\n var options = this.options,\n series = point.series,\n seriesOptions = series.options;\n return [\n options.className,\n 'highcharts-label',\n isHeader && 'highcharts-tooltip-header',\n isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',\n !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),\n (seriesOptions && seriesOptions.className)\n ].filter(isString).join(' ');\n };\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n Tooltip.prototype.getLabel = function () {\n var tooltip = this,\n styledMode = this.chart.styledMode,\n options = this.options,\n doSplit = this.split && this.allowShared,\n pointerEvents = (options.style.pointerEvents ||\n (this.shouldStickOnContact() ? 'auto' : 'none'));\n var container,\n renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (tooltip.label) {\n var wasSplit = !tooltip.label.hasClass('highcharts-label');\n if ((doSplit && !wasSplit) || (!doSplit && wasSplit)) {\n tooltip.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n var chartStyle = this.chart.options.chart.style,\n Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents: pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g('tooltip');\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, 'tooltip')\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents: pointerEvents })\n .shadow(options.shadow);\n }\n }\n if (styledMode && options.shadow) {\n // Apply the drop-shadow filter\n this.applyFilter();\n this.label.attr({\n filter: 'url(#drop-shadow-' + this.chart.index + ')'\n });\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside && !tooltip.split) {\n var label_1 = this.label;\n var xSetter_1 = label_1.xSetter,\n ySetter_1 = label_1.ySetter;\n label_1.xSetter = function (value) {\n xSetter_1.call(label_1, tooltip.distance);\n container.style.left = value + 'px';\n };\n label_1.ySetter = function (value) {\n ySetter_1.call(label_1, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .attr({ zIndex: 8 })\n .add();\n }\n return this.label;\n };\n /**\n * Place the tooltip in a chart without spilling over and not covering the\n * point itself.\n *\n * @function Highcharts.Tooltip#getPosition\n *\n * @param {number} boxWidth\n * Width of the tooltip box.\n *\n * @param {number} boxHeight\n * Height of the tooltip box.\n *\n * @param {Highcharts.Point} point\n * Tooltip related point.\n *\n * @return {Highcharts.PositionObject}\n * Recommended position of the tooltip.\n */\n Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {\n var chart = this.chart,\n distance = this.distance,\n ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside,\n outerWidth = outside ?\n // substract distance to prevent scrollbars\n doc.documentElement.clientWidth - 2 * distance :\n chart.chartWidth,\n outerHeight = outside ?\n Math.max(doc.body.scrollHeight,\n doc.documentElement.scrollHeight,\n doc.body.offsetHeight,\n doc.documentElement.offsetHeight,\n doc.documentElement.clientHeight) :\n chart.chartHeight,\n chartPosition = chart.pointer.getChartPosition(),\n scaleX = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX); },\n scaleY = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY); }, \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = function (dim) {\n var isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n var first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n var flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n var preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point,\n it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim,\n outerSize,\n innerSize,\n scaledInnerSize, // #11329\n point,\n min,\n max) {\n var scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance,\n scaleDiff = (innerSize - scaledInnerSize) / 2,\n roomLeft = scaledInnerSize < point - distance,\n roomRight = point + distance + scaledInnerSize < outerSize,\n alignedLeft = point - scaledDist - innerSize + scaleDiff,\n alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n var retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n var temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n };\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n Tooltip.prototype.hide = function (delay) {\n var tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n };\n /**\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n Tooltip.prototype.init = function (chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n };\n Tooltip.prototype.shouldStickOnContact = function (pointerEvent) {\n return !!(!this.followPointer &&\n this.options.stickOnContact &&\n (!pointerEvent || this.chart.pointer.inClass(pointerEvent.target, 'highcharts-tooltip')));\n };\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n Tooltip.prototype.move = function (x, y, anchorX, anchorY) {\n var tooltip = this,\n now = tooltip.now,\n animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),\n skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n };\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n Tooltip.prototype.refresh = function (pointOrPoints, mouseEvent) {\n var tooltip = this,\n chart = this.chart,\n options = tooltip.options,\n pointer = chart.pointer,\n points = splat(pointOrPoints),\n point = points[0],\n pointConfig = [],\n formatter = options.formatter || tooltip.defaultFormatter,\n shared = tooltip.shared,\n styledMode = chart.styledMode;\n var textConfig = {};\n if (!options.enabled || !point.series) { // #16820\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n var anchor = tooltip.getAnchor(pointOrPoints,\n mouseEvent),\n x = anchor[0],\n y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n var text = formatter.call(textConfig,\n tooltip);\n // register the current series\n var currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n var checkX_1 = x;\n var checkY_1 = y;\n if (mouseEvent && pointer.isDirectTouch) {\n checkX_1 = mouseEvent.chartX - chart.plotLeft;\n checkY_1 = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some(function (p) {\n return pointer.isDirectTouch || // ##17929\n p.series.shouldShowTooltip(checkX_1, checkY_1);\n })) {\n var label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: chart.spacingBox.width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.addClass(tooltip.getClassName(point), true);\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n };\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array} points\n */\n Tooltip.prototype.renderSplit = function (labels, points) {\n var tooltip = this;\n var chart = tooltip.chart,\n _a = tooltip.chart,\n chartWidth = _a.chartWidth,\n chartHeight = _a.chartHeight,\n plotHeight = _a.plotHeight,\n plotLeft = _a.plotLeft,\n plotTop = _a.plotTop,\n pointer = _a.pointer,\n _b = _a.scrollablePixelsY,\n scrollablePixelsY = _b === void 0 ? 0 : _b,\n scrollablePixelsX = _a.scrollablePixelsX,\n _c = _a.scrollingContainer,\n _d = _c === void 0 ? { scrollLeft: 0,\n scrollTop: 0 } : _c,\n scrollLeft = _d.scrollLeft,\n scrollTop = _d.scrollTop,\n styledMode = _a.styledMode,\n distance = tooltip.distance,\n options = tooltip.options,\n positioner = tooltip.options.positioner;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n var bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n var tooltipLabel = tooltip.getLabel();\n var ren = this.renderer || chart.renderer;\n var headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n var _e = pointer.getChartPosition(),\n chartLeft = _e.left,\n chartTop = _e.top;\n var distributionBoxTop = plotTop + scrollTop;\n var headerHeight = 0;\n var adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n var isHeader = point.isHeader,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b,\n series = point.series;\n var anchorX;\n var anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n var xAxis = series.xAxis,\n yAxis = series.yAxis;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX: anchorX, anchorY: anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft) {\n if (alignedLeft === void 0) { alignedLeft = true; }\n var y;\n var x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x: x, y: y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var tt = partialTooltip;\n var isHeader = point.isHeader,\n series = point.series;\n if (!tt) {\n var attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass(tooltip.getClassName(point, true, isHeader))\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .shadow(options.shadow)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* Palette.neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n var boxes = labels.slice(0,\n points.length + 1).reduce(function (boxes,\n str,\n i) {\n if (str !== false && str !== '') {\n var point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n var isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n var owner = isHeader ? tooltip : point.series;\n var tt = owner.tt = updatePartialTooltip(owner.tt,\n point,\n str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n var bBox = tt.getBBox();\n var boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n var _a = getAnchor(point),\n anchorX = _a.anchorX,\n anchorY = _a.anchorY;\n if (typeof anchorY === 'number') {\n var size = bBox.height + 1;\n var boxPosition = (positioner ?\n positioner.call(tooltip,\n boxWidth,\n size,\n point) :\n defaultPositioner(anchorX,\n anchorY,\n isHeader,\n boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX: anchorX,\n anchorY: anchorY,\n boxWidth: boxWidth,\n point: point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size: size,\n target: boxPosition.y,\n tt: tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some(function (box) {\n // Always realign if the beginning of a label is outside bounds\n var outside = tooltip.outside;\n var boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map(function (box) {\n var _a = defaultPositioner(box.anchorX,\n box.anchorY,\n box.point.isHeader,\n box.boxWidth,\n false),\n x = _a.x,\n y = _a.y;\n return extend(box, {\n target: y,\n x: x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n var boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n var x = box.x,\n boxWidth = box.boxWidth,\n isHeader = box.isHeader;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n var x = box.x,\n anchorX = box.anchorX,\n anchorY = box.anchorY,\n pos = box.pos,\n isHeader = box.point.isHeader;\n var attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x: x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip,\n but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: (pos || 0) + distributionBoxTop,\n anchorX: anchorX,\n anchorY: anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n var offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n var container = tooltip.container,\n outside = tooltip.outside,\n renderer = tooltip.renderer;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n var _f = tooltipLabel.getBBox(),\n width = _f.width,\n height = _f.height,\n x = _f.x,\n y = _f.y;\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n };\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n Tooltip.prototype.drawTracker = function () {\n var tooltip = this;\n if (!this.shouldStickOnContact()) {\n if (tooltip.tracker) {\n tooltip.tracker.destroy();\n }\n return;\n }\n var chart = tooltip.chart;\n var label = tooltip.label;\n var points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n var box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n var anchorPos = this.getAnchor(points);\n var labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n };\n /**\n * @private\n */\n Tooltip.prototype.styledModeFormat = function (formatString) {\n return formatString\n .replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex} ' +\n '{series.options.className} ' +\n '{point.options.className}\"');\n };\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n Tooltip.prototype.tooltipFooterHeaderFormatter = function (labelConfig, isFooter) {\n var series = labelConfig.series,\n tooltipOptions = series.tooltipOptions,\n xAxis = series.xAxis,\n dateTime = xAxis && xAxis.dateTime,\n e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n var xDateFormat = tooltipOptions.xDateFormat,\n formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n };\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n Tooltip.prototype.update = function (options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n };\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n Tooltip.prototype.updatePosition = function (point) {\n var _a = this,\n chart = _a.chart,\n distance = _a.distance,\n options = _a.options,\n pointer = chart.pointer,\n label = this.getLabel(), \n // Needed for outside: true (#11688)\n _b = pointer.getChartPosition(),\n left = _b.left,\n top = _b.top,\n scaleX = _b.scaleX,\n scaleY = _b.scaleY,\n pos = (options.positioner || this.getPosition).call(this,\n label.width,\n label.height,\n point);\n var anchorX = (point.plotX || 0) + chart.plotLeft,\n anchorY = (point.plotY || 0) + chart.plotTop,\n pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n // Corrects positions, occurs with tooltip positioner (#16944)\n if (options.positioner) {\n pos.x += left - distance;\n pos.y += top - distance;\n }\n pad = options.borderWidth + 2 * distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (scaleX !== 1 || scaleY !== 1) {\n css(this.container, {\n transform: \"scale(\".concat(scaleX, \", \").concat(scaleY, \")\")\n });\n anchorX *= scaleX;\n anchorY *= scaleY;\n }\n anchorX += left - pos.x;\n anchorY += top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n };\n return Tooltip;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * Configuration for the tooltip formatters.\n *\n * @interface Highcharts.TooltipFormatterContextObject\n * @extends Highcharts.PointLabelObject\n */ /**\n * Array of points in shared tooltips.\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array|undefined}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var format = F.format;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n syncTimeout = U.syncTimeout,\n removeEvent = U.removeEvent,\n uniqueKey = U.uniqueKey;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n var Point = /** @class */ (function () {\n function Point() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {number|string}\n */\n this.category = void 0;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series or pies.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The attributes of the rendered SVG shape like in `column` or `pie`\n * series.\n *\n * @readonly\n * @name Highcharts.Point#shapeArgs\n * @type {Readonly|undefined}\n */\n this.shapeArgs = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n Point.prototype.animateBeforeDestroy = function () {\n var point = this,\n animateParams = { x: point.startXPos,\n opacity: 0 },\n graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n var isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n };\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n Point.prototype.applyOptions = function (options, x) {\n var point = this,\n series = point.series,\n pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = this.isValid && !this.isValid();\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n };\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n Point.prototype.destroy = function () {\n var point = this,\n series = point.series,\n chart = series.chart,\n dataSorting = series.options.dataSorting,\n hoverPoints = chart.hoverPoints,\n globalAnimation = point.series.chart.renderer.globalAnimation,\n animation = animObject(globalAnimation);\n var prop;\n /**\n * Allow to call after animation.\n * @private\n */\n function destroyPoint() {\n // Remove all events and elements\n if (point.graphic ||\n point.graphics ||\n point.dataLabel ||\n point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (prop in point) { // eslint-disable-line guard-for-in\n point[prop] = null;\n }\n }\n if (point.legendItem) {\n // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n };\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary} [kinds]\n */\n Point.prototype.destroyElements = function (kinds) {\n var point = this,\n props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item && item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n };\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n Point.prototype.firePointEvent = function (eventType, eventArgs, defaultFunction) {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n };\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n Point.prototype.getClassName = function () {\n var point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n };\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n Point.prototype.getGraphicalProps = function (kinds) {\n var point = this,\n props = [],\n graphicalProps = { singular: [],\n plural: [] };\n var prop,\n i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic', 'shadowGroup');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n [\n 'graphic',\n 'dataLabel',\n 'connector'\n ].forEach(function (prop) {\n var plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n };\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n Point.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n Point.prototype.getNestedProperty = function (key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n };\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n Point.prototype.getZone = function () {\n var series = this.series,\n zones = series.zones,\n zoneAxis = series.zoneAxis || 'y';\n var zone,\n i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n };\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n Point.prototype.hasNewShapeType = function () {\n var point = this;\n var oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n };\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n Point.prototype.init = function (series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n };\n /**\n * Determine if point is valid.\n * @private\n * @function Highcharts.Point#isValid\n */\n Point.prototype.isValid = function () {\n return this.x !== null && isNumber(this.y);\n };\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n Point.prototype.optionsToObject = function (options) {\n var series = this.series,\n keys = series.options.keys,\n pointArrayMap = keys || series.pointArrayMap || ['y'],\n valueCount = pointArrayMap.length;\n var ret = {},\n firstItemType,\n i = 0,\n j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n };\n /**\n * Get the pixel position of the point relative to the plot area.\n * @private\n * @function Highcharts.Point#pos\n */\n Point.prototype.pos = function (chartCoordinates, plotY) {\n if (plotY === void 0) { plotY = this.plotY; }\n var _a = this,\n plotX = _a.plotX,\n series = _a.series,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var posX = 0,\n posY = 0;\n if (isNumber(plotX) && isNumber(plotY)) {\n if (chartCoordinates) {\n posX = xAxis ? xAxis.pos : chart.plotLeft;\n posY = yAxis ? yAxis.pos : chart.plotTop;\n }\n return chart.inverted && xAxis && yAxis ?\n [yAxis.len - plotY + posY, xAxis.len - plotX + posX] :\n [plotX + posX, plotY + posY];\n }\n };\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n Point.prototype.resolveColor = function () {\n var series = this.series,\n optionsChart = series.chart.options.chart,\n styledMode = series.chart.styledMode;\n var color,\n colors,\n colorCount = optionsChart.colorCount,\n colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number|undefined}\n */\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n };\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n Point.prototype.setNestedProperty = function (object, value, key) {\n var nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n var isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n };\n Point.prototype.shouldDraw = function () {\n return !this.isNull;\n };\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n Point.prototype.tooltipFormatter = function (pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n var series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n };\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n Point.prototype.update = function (options, redraw, animation, runEvent) {\n var point = this,\n series = point.series,\n graphic = point.graphic,\n chart = series.chart,\n seriesOptions = series.options;\n var i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle mock graphic elements for a11y, #12718\n var hasMockGraphic = graphic && point.hasMockGraphic;\n var shouldDestroyGraphic = point.y === null ?\n !hasMockGraphic :\n hasMockGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasMockGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n };\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n Point.prototype.remove = function (redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n };\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n Point.prototype.select = function (selected, accumulate) {\n var point = this,\n series = point.series,\n chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n var loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n };\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n Point.prototype.onMouseOver = function (e) {\n var point = this,\n series = point.series,\n chart = series.chart,\n pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n };\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n Point.prototype.onMouseOut = function () {\n var point = this,\n chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n };\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n Point.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var point_1 = this,\n options = merge(point_1.series.options.point,\n point_1.options),\n events = options.events;\n point_1.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point_1, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n };\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n Point.prototype.setState = function (state, move) {\n var point = this,\n series = point.series,\n previousState = point.state,\n stateOptions = (series.options.states[state || 'normal'] ||\n {}),\n markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker),\n normalDisabled = (markerOptions && markerOptions.enabled === false),\n markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}),\n stateDisabled = markerStateOptions.enabled === false,\n pointMarker = point.marker || {},\n chart = series.chart,\n hasMarkers = (markerOptions && series.markerAttribs);\n var halo = series.halo,\n markerAttribs,\n pointAttribs,\n pointAttribsAnimation,\n stateMarkerGraphic = series.stateMarkerGraphic,\n newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from mocked null points (#14966)\n if (point.graphic && !point.hasMockGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n var opacity_1 = pointAttribs.opacity;\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints && isNumber(opacity_1)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label &&\n !label.hasClass('highcharts-data-label-hidden')) {\n label.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n var haloOptions = stateOptions.halo;\n var markerGraphic = (point.graphic || stateMarkerGraphic);\n var markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state: state });\n };\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n Point.prototype.haloPath = function (size) {\n var pos = this.pos();\n return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];\n };\n return Point;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|null|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Tooltip.js'], _modules['Core/Utilities.js']], function (Color, H, Tooltip, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var charts = H.charts,\n noop = H.noop;\n var addEvent = U.addEvent,\n attr = U.attr,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n isObject = U.isObject,\n objectEach = U.objectEach,\n offset = U.offset,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * associated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n var Pointer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Pointer(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array} points\n * Currently hovered points\n */\n Pointer.prototype.applyInactiveState = function (points) {\n var activeSeries = [],\n series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n };\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n Pointer.prototype.destroy = function () {\n var pointer = this;\n this.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n };\n /**\n * Calculate attrs for selection marker.\n * @private\n * @function Highcharts.Pointer#getSelectionMarkerAttrs\n * @emits getSelectionMarkerAttrs\n */\n Pointer.prototype.getSelectionMarkerAttrs = function (chartX, chartY) {\n var _this = this;\n var e = {\n args: { chartX: chartX,\n chartY: chartY },\n attrs: {},\n shapeType: 'rect'\n };\n fireEvent(this, 'getSelectionMarkerAttrs', e, function (e) {\n var _a = _this,\n chart = _a.chart,\n _b = _a.mouseDownX,\n mouseDownX = _b === void 0 ? 0 : _b,\n _c = _a.mouseDownY,\n mouseDownY = _c === void 0 ? 0 : _c,\n zoomHor = _a.zoomHor,\n zoomVert = _a.zoomVert,\n attrs = e.attrs;\n var size;\n attrs.x = chart.plotLeft;\n attrs.y = chart.plotTop;\n attrs.width = zoomHor ? 1 : chart.plotWidth;\n attrs.height = zoomVert ? 1 : chart.plotHeight;\n // Adjust the width of the selection marker\n if (zoomHor) {\n size = chartX - mouseDownX;\n attrs.width = Math.abs(size);\n attrs.x = (size > 0 ? 0 : size) + mouseDownX;\n }\n // Adjust the height of the selection marker\n if (zoomVert) {\n size = chartY - mouseDownY;\n attrs.height = Math.abs(size);\n attrs.y = (size > 0 ? 0 : size) + mouseDownY;\n }\n });\n return e;\n };\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n Pointer.prototype.drag = function (e) {\n var chart = this.chart,\n chartOptions = chart.options.chart,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning,\n panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n var chartX = e.chartX,\n chartY = e.chartY,\n clickedInside,\n selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to coordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n var _a = this.getSelectionMarkerAttrs(chartX,\n chartY),\n shapeType = _a.shapeType,\n attrs = _a.attrs;\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer[shapeType]();\n selectionMarker\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: chartOptions.selectionMarkerFill ||\n color(\"#335cad\" /* Palette.highlightColor80 */)\n .setOpacity(0.25).get()\n });\n }\n }\n }\n if (selectionMarker) {\n selectionMarker.attr(attrs);\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n };\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n Pointer.prototype.dragStart = function (e) {\n var chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n };\n /**\n * Get selection box to calculate extremes\n * @private\n * @function Highcharts.Pointer#getSelectionBox\n * @emits getSelectionBox\n */\n Pointer.prototype.getSelectionBox = function (marker) {\n var e = {\n args: { marker: marker },\n result: {}\n };\n fireEvent(this, 'getSelectionBox', e, function (e) {\n e.result = {\n x: marker.attr ? +marker.attr('x') : marker.x,\n y: marker.attr ? +marker.attr('y') : marker.y,\n width: marker.attr ? marker.attr('width') : marker.width,\n height: marker.attr ? marker.attr('height') : marker.height\n };\n });\n return e.result;\n };\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n Pointer.prototype.drop = function (e) {\n var pointer = this,\n chart = this.chart,\n hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n var _a = this.getSelectionBox(this.selectionMarker),\n x_1 = _a.x,\n y_1 = _a.y,\n width_1 = _a.width,\n height_1 = _a.height;\n var selectionData_1 = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x: x_1,\n y: y_1,\n width: width_1,\n height: height_1\n }, \n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n runZoom_1 = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x_1) &&\n isNumber(y_1) &&\n isNumber(width_1) &&\n isNumber(height_1)) { // #859, #3569\n var horiz = axis.horiz,\n minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x_1 : y_1) + minPixelPadding),\n selectionMax = axis.toValue((horiz ? x_1 + width_1 : y_1 + height_1) -\n minPixelPadding);\n selectionData_1[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom_1 = true;\n }\n });\n if (runZoom_1) {\n fireEvent(chart, 'selection', selectionData_1, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n };\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n Pointer.prototype.findNearestKDPoint = function (series, shared, e) {\n var closest;\n /** @private */\n function sort(p1, p2) {\n var isCloserX = p1.distX - p2.distX,\n isCloser = p1.dist - p2.dist,\n isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n var result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n var noSharedTooltip = s.noSharedTooltip && shared,\n compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0),\n point = s.searchPoint(e,\n compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n };\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n Pointer.prototype.getChartCoordinatesFromPoint = function (point, inverted) {\n var series = point.series,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n var x = pick(point.clientX,\n point.plotX);\n var y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n };\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n Pointer.prototype.getChartPosition = function () {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n var container = this.chart.container;\n var pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n var offsetWidth = container.offsetWidth;\n var offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n };\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n Pointer.prototype.getCoordinates = function (e) {\n var coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n };\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currently being hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently being hovered.\n *\n * @param {Array} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n Pointer.prototype.getHoverData = function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n var hoverPoints = [],\n useExisting = !!(isDirectTouch && existingHoverPoint),\n filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking,\n true));\n };\n var hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n var notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter(function (s) { return s.stickyTracking &&\n (eventArgs.filter || filter)(s); });\n // Use existing hovered point or find the one closest to coordinates.\n var hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries,\n shared,\n e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n var point = find(s.points,\n function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.boosted && s.boost) {\n point = s.boost.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n };\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n Pointer.prototype.getPointFromEvent = function (e) {\n var target = e.target,\n point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n };\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n Pointer.prototype.onTrackerMouseOut = function (e) {\n var chart = this.chart;\n var relatedTarget = e.relatedTarget || e.toElement;\n var series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n };\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specific class name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n Pointer.prototype.inClass = function (element, className) {\n var elem = element,\n elemClassName;\n while (elem) {\n elemClassName = attr(elem, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n elem = elem.parentElement;\n }\n };\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n Pointer.prototype.init = function (chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n if (Tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, options.tooltip);\n }\n this.setDOMEvents();\n };\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * On map charts, the properties `lon` and `lat` are added to the event\n * object given that the chart has projection information.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n Pointer.prototype.normalize = function (e, chartPosition) {\n var touches = e.touches;\n // iOS (#2757)\n var ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches,\n e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n var chartX = ePos.pageX - chartPosition.left,\n chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n Pointer.prototype.onContainerClick = function (e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var pEvt = this.normalize(e);\n var plotLeft = chart.plotLeft;\n var plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n Pointer.prototype.onContainerMouseDown = function (e) {\n var isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n // Normalize before the 'if' for the legacy IE (#7850)\n e = this.normalize(e);\n // #11635, Firefox does not reliable fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button (incl. IE 8 support)\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n };\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n Pointer.prototype.onContainerMouseLeave = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n var tooltip = this.chart.tooltip;\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n (e.relatedTarget || e.toElement)) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n // #11635, Firefox wheel scroll does not fire out events consistently\n if (tooltip && !tooltip.isHidden) {\n this.reset();\n }\n };\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n Pointer.prototype.onContainerMouseEnter = function (e) {\n delete this.chartPosition;\n };\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n Pointer.prototype.onContainerMouseMove = function (e) {\n var chart = this.chart,\n tooltip = chart.tooltip,\n pEvt = this.normalize(e);\n this.setHoverChartIndex();\n // In IE8 we apparently need this returnValue set to false in order to\n // avoid text being selected. But in Chrome, e.returnValue is prevented,\n // plus we don't need to run e.preventDefault to prevent selected text\n // in modern browsers. So we set it conditionally. Remove it when IE8 is\n // no longer needed. #2251, #3224.\n if (!pEvt.preventDefault) {\n pEvt.returnValue = false;\n }\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n })) &&\n // If the tooltip has stickOnContact enabled, do nothing. This\n // applies regardless of any combinations of the `split` and\n // `useHTML` options.\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n Pointer.prototype.onDocumentTouchEnd = function (e) {\n var hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n Pointer.prototype.onContainerTouchMove = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n Pointer.prototype.onContainerTouchStart = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n };\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n Pointer.prototype.onDocumentMouseMove = function (e) {\n var chart = this.chart;\n var tooltip = chart.tooltip;\n var chartPosition = this.chartPosition;\n var pEvt = this.normalize(e,\n chartPosition);\n // If we're outside, hide the tooltip\n if (chartPosition &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt)) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n Pointer.prototype.onDocumentMouseUp = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n };\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n Pointer.prototype.pinch = function (e) {\n var self = this,\n chart = self.chart,\n pinchDown = self.pinchDown,\n touches = (e.touches || []),\n touchesLength = touches.length,\n lastValidTouch = self.lastValidTouch,\n hasZoom = self.hasZoom,\n transform = {},\n fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick),\n clip = {},\n tooltip = self.chart.tooltip,\n followTouchMove = touchesLength === 1 &&\n pick((tooltip && tooltip.options.followTouchMove),\n true);\n var selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n var bounds = chart.bounds[axis.horiz ? 'h' : 'v'],\n minPixelPadding = axis.minPixelPadding,\n min = axis.toPixels(Math.min(pick(axis.options.min,\n axis.dataMin),\n axis.dataMin)),\n max = axis.toPixels(Math.max(pick(axis.options.max,\n axis.dataMax),\n axis.dataMax)),\n absMin = Math.min(min,\n max),\n absMax = Math.max(min,\n max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (followTouchMove) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, function () {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n };\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n Pointer.prototype.pinchTranslate = function (pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n };\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n Pointer.prototype.pinchTranslateDirection = function (horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n var chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n var selectionWH,\n selectionXY,\n clipXY,\n scale = forcedScale || 1,\n touch0Now = touches[0][sChartXY],\n touch1Now = !singleTouch && touches[1][sChartXY],\n outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n var scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n var transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n };\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n Pointer.prototype.reset = function (allowMove, delay) {\n var pointer = this,\n chart = pointer.chart,\n hoverSeries = chart.hoverSeries,\n hoverPoint = chart.hoverPoint,\n hoverPoints = chart.hoverPoints,\n tooltip = chart.tooltip,\n tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n };\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n Pointer.prototype.runPointActions = function (e, p, force) {\n var pointer = this,\n chart = pointer.chart,\n series = chart.series,\n tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0),\n shared = (tooltip ?\n tooltip.shared :\n false);\n var hoverPoint = p || chart.hoverPoint,\n hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n var // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)),\n hoverData = this.getHoverData(hoverPoint,\n hoverSeries,\n series,\n isDirectTouch,\n shared,\n e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n var points = hoverData.hoverPoints,\n followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split,\n useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n (force ||\n hoverPoint !== chart.hoverPoint ||\n (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver', void 0, function () {\n // Draw tooltip if necessary\n if (tooltip && hoverPoint) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n });\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n var anchor = tooltip.getAnchor([{}],\n e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n var chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n var snap = pick((axis.crosshair || {}).snap,\n true);\n var point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, function (p) {\n return p.series && p.series[axis.coll] === axis;\n });\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n };\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n Pointer.prototype.scaleGroups = function (attribs, clip) {\n var chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n var seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n };\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n Pointer.prototype.setDOMEvents = function () {\n var _this = this;\n var container = this.chart.container,\n ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n var parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', function () {\n delete _this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n };\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n Pointer.prototype.setHoverChartIndex = function () {\n var chart = this.chart;\n var hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: chart.container });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n };\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n Pointer.prototype.touch = function (e, start) {\n var chart = this.chart;\n var hasMoved,\n pinchDown,\n isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n };\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n Pointer.prototype.touchSelect = function (e) {\n return Boolean(this.chart.options.chart.zooming.singleTouch &&\n e.touches &&\n e.touches.length === 1);\n };\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n Pointer.prototype.zoomOption = function (e) {\n var chart = this.chart,\n options = chart.options.chart,\n inverted = chart.inverted;\n var zoomType = options.zooming.type || '',\n zoomX,\n zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.zooming.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n };\n return Pointer;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * The selected Axis.\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * The related browser event.\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * Indicates a reset event to restore default state.\n * @name Highcharts.SelectEventObject#resetSelection\n * @type {boolean|undefined}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/MSPointer.js', [_modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var charts = H.charts,\n doc = H.doc,\n noop = H.noop,\n win = H.win;\n var addEvent = U.addEvent,\n css = U.css,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n // The touches object keeps track of the points being touched at all times\n var touches = {};\n var hasPointerEvent = !!win.PointerEvent;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function getWebkitTouches() {\n var fake = [];\n fake.item = function (i) {\n return this[i];\n };\n objectEach(touches, function (touch) {\n fake.push({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n });\n });\n return fake;\n }\n /** @private */\n function translateMSPointer(e, method, wktype, func) {\n var chart = charts[Pointer.hoverChartIndex || NaN];\n if ((e.pointerType === 'touch' ||\n e.pointerType === e.MSPOINTER_TYPE_TOUCH) && chart) {\n var p = chart.pointer;\n func(e);\n p[method]({\n type: wktype,\n target: e.currentTarget,\n preventDefault: noop,\n touches: getWebkitTouches()\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /** @private */\n var MSPointer = /** @class */ (function (_super) {\n __extends(MSPointer, _super);\n function MSPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n MSPointer.isRequired = function () {\n return !!(!H.hasTouch && (win.PointerEvent || win.MSPointerEvent));\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add or remove the MS Pointer specific events\n * @private\n * @function Highcharts.Pointer#batchMSEvents\n */\n MSPointer.prototype.batchMSEvents = function (fn) {\n fn(this.chart.container, hasPointerEvent ? 'pointerdown' : 'MSPointerDown', this.onContainerPointerDown);\n fn(this.chart.container, hasPointerEvent ? 'pointermove' : 'MSPointerMove', this.onContainerPointerMove);\n fn(doc, hasPointerEvent ? 'pointerup' : 'MSPointerUp', this.onDocumentPointerUp);\n };\n // Destroy MS events also\n MSPointer.prototype.destroy = function () {\n this.batchMSEvents(removeEvent);\n _super.prototype.destroy.call(this);\n };\n // Disable default IE actions for pinch and such on chart element\n MSPointer.prototype.init = function (chart, options) {\n _super.prototype.init.call(this, chart, options);\n if (this.hasZoom) { // #4014\n css(chart.container, {\n '-ms-touch-action': 'none',\n 'touch-action': 'none'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerDown\n */\n MSPointer.prototype.onContainerPointerDown = function (e) {\n translateMSPointer(e, 'onContainerTouchStart', 'touchstart', function (e) {\n touches[e.pointerId] = {\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.currentTarget\n };\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerMove\n */\n MSPointer.prototype.onContainerPointerMove = function (e) {\n translateMSPointer(e, 'onContainerTouchMove', 'touchmove', function (e) {\n touches[e.pointerId] = ({ pageX: e.pageX, pageY: e.pageY });\n if (!touches[e.pointerId].target) {\n touches[e.pointerId].target = e.currentTarget;\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentPointerUp\n */\n MSPointer.prototype.onDocumentPointerUp = function (e) {\n translateMSPointer(e, 'onDocumentTouchEnd', 'touchend', function (e) {\n delete touches[e.pointerId];\n });\n };\n // Add IE specific touch events to chart\n MSPointer.prototype.setDOMEvents = function () {\n var tooltip = this.chart.tooltip;\n _super.prototype.setDOMEvents.call(this);\n if (this.hasZoom ||\n pick((tooltip && tooltip.options.followTouchMove), true)) {\n this.batchMSEvents(addEvent);\n }\n };\n return MSPointer;\n }(Pointer));\n /* *\n *\n * Default Export\n *\n * */\n\n return MSPointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var format = F.format;\n var isFirefox = H.isFirefox,\n marginNames = H.marginNames,\n win = H.win;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n stableSort = U.stableSort,\n syncTimeout = U.syncTimeout,\n wrap = U.wrap;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n var Legend = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Legend(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = void 0;\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n Legend.prototype.init = function (chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n if (this.proximate) {\n this.unchartrender = addEvent(this.chart, 'render', function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n });\n }\n else if (this.unchartrender) {\n this.unchartrender();\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n Legend.prototype.setOptions = function (options) {\n var padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop || 0;\n this.itemMarginBottom = options.itemMarginBottom || 0;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n };\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n Legend.prototype.update = function (options, redraw) {\n var chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n };\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n Legend.prototype.colorizeItem = function (item, visible) {\n var _a = item.legendItem || {},\n group = _a.group,\n label = _a.label,\n line = _a.line,\n symbol = _a.symbol;\n if (group) {\n group[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n }\n if (!this.chart.styledMode) {\n var legend = this,\n options = legend.options,\n hiddenColor = legend.itemHiddenStyle.color,\n textColor = visible ?\n options.itemStyle.color :\n hiddenColor,\n symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor,\n markerOptions = item.options && item.options.marker;\n var symbolAttr = { fill: symbolColor };\n if (label) {\n label.css({\n fill: textColor,\n color: textColor // #1553, oldIE\n });\n }\n if (line) {\n line.attr({ stroke: symbolColor });\n }\n if (symbol) {\n // Apply marker options\n if (markerOptions && symbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n symbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item: item, visible: visible });\n };\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n Legend.prototype.positionItems = function () {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n };\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n Legend.prototype.positionItem = function (item) {\n var _this = this;\n var legend = this,\n _a = item.legendItem || {},\n group = _a.group,\n _b = _a.x,\n x = _b === void 0 ? 0 : _b,\n _c = _a.y,\n y = _c === void 0 ? 0 : _c,\n options = legend.options,\n symbolPadding = options.symbolPadding,\n ltr = !options.rtl,\n checkbox = item.checkbox;\n if (group && group.element) {\n var attribs = {\n translateX: ltr ?\n x :\n legend.legendWidth - x - 2 * symbolPadding - 4,\n translateY: y\n };\n var complete = function () {\n fireEvent(_this, 'afterPositionItem', { item: item });\n };\n group[defined(group.translateY) ? 'animate' : 'attr'](attribs, void 0, complete);\n }\n if (checkbox) {\n checkbox.x = x;\n checkbox.y = y;\n }\n };\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n Legend.prototype.destroyItem = function (item) {\n var checkbox = item.checkbox,\n legendItem = item.legendItem || {};\n // destroy SVG elements\n for (var _i = 0, _a = ['group', 'label', 'line', 'symbol']; _i < _a.length; _i++) {\n var key = _a[_i];\n if (legendItem[key]) {\n legendItem[key] = legendItem[key].destroy();\n }\n }\n if (checkbox) {\n discardElement(checkbox);\n }\n item.legendItem = void 0;\n };\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n Legend.prototype.destroy = function () {\n var legend = this;\n // Destroy items\n for (var _i = 0, _a = this.getAllItems(); _i < _a.length; _i++) {\n var item = _a[_i];\n this.destroyItem(item);\n }\n // Destroy legend elements\n for (var _b = 0, _c = [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (legend[key]) {\n legend[key] = legend[key].destroy();\n }\n }\n this.display = null; // Reset in .render on update.\n };\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n Legend.prototype.positionCheckboxes = function () {\n var alignAttr = this.group && this.group.alignAttr,\n clipHeight = this.clipHeight || this.legendHeight,\n titleHeight = this.titleHeight;\n var translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n var checkbox = item.checkbox;\n var top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n };\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n Legend.prototype.renderTitle = function () {\n var options = this.options,\n padding = this.padding,\n titleOptions = options.title;\n var bBox,\n titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, void 0, void 0, void 0, options.useHTML, void 0, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n };\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n Legend.prototype.setText = function (item) {\n var options = this.options;\n item.legendItem.label.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n };\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n Legend.prototype.renderItem = function (item) {\n var legend = this,\n legendItem = item.legendItem = item.legendItem || {},\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n horizontal = options.layout === 'horizontal',\n symbolWidth = legend.symbolWidth,\n symbolPadding = options.symbolPadding || 0,\n itemStyle = legend.itemStyle,\n itemHiddenStyle = legend.itemHiddenStyle,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n ltr = !options.rtl,\n isSeries = !item.series,\n series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item,\n seriesOptions = series.options,\n showCheckbox = (legend.createCheckboxForItem) &&\n seriesOptions &&\n seriesOptions.showCheckbox,\n useHTML = options.useHTML,\n itemClassName = item.options.className;\n var label = legendItem.label, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!label) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n legendItem.group = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n legendItem.label = label = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n label.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n label\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(legendItem.group);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(chart.styledMode ? 12 : itemStyle.fontSize, label);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n label.attr('y', legend.baseline);\n legend.symbolHeight =\n options.symbolHeight || legend.fontMetrics.f;\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n label.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, label, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n label.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n var bBox = label.getBBox();\n var fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n legendItem.labelWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(legendItem.labelHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n };\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n Legend.prototype.layoutItem = function (item) {\n var options = this.options,\n padding = this.padding,\n horizontal = options.layout === 'horizontal',\n itemHeight = item.itemHeight,\n itemMarginBottom = this.itemMarginBottom,\n itemMarginTop = this.itemMarginTop,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n maxLegendWidth = this.maxLegendWidth,\n itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth,\n legendItem = item.legendItem || {};\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n legendItem.x = this.itemX;\n legendItem.y = this.itemY;\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n };\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n Legend.prototype.getAllItems = function () {\n var allItems = [];\n this.chart.series.forEach(function (series) {\n var seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat((series.legendItem || {}).labels ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems: allItems });\n return allItems;\n };\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n Legend.prototype.getAlignment = function () {\n var options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n };\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array} margin\n * @param {Array} spacing\n */\n Legend.prototype.adjustMargins = function (margin, spacing) {\n var chart = this.chart,\n options = this.options,\n alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n Legend.prototype.proximatePositions = function () {\n var chart = this.chart,\n boxes = [],\n alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n var lastPoint,\n height,\n useFirstPoint = alignLeft,\n target,\n top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.label.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item: item\n });\n }\n }, this);\n var legendItem;\n for (var _i = 0, _a = distribute(boxes, chart.plotHeight); _i < _a.length; _i++) {\n var box = _a[_i];\n legendItem = box.item.legendItem || {};\n if (isNumber(box.pos)) {\n legendItem.y = chart.plotTop - chart.spacing[0] + box.pos;\n }\n }\n };\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n Legend.prototype.render = function () {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n var display,\n legendWidth,\n legendHeight,\n legendGroup = legend.group,\n allowedWidth,\n box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth = chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer\n .g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer\n .g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer\n .g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, function (a, b) {\n return ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0);\n });\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.placed ? 'animate' : 'attr'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n }\n // hide the border if no items\n legendGroup[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n };\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n Legend.prototype.align = function (alignTo) {\n if (alignTo === void 0) { alignTo = this.chart.spacingBox; }\n var chart = this.chart,\n options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n var y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y: y });\n }\n if (!chart.hasRendered) {\n // Avoid animation when adjusting alignment for responsiveness and\n // colorAxis label layout\n this.group.placed = false;\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n };\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n Legend.prototype.handleOverflow = function (legendHeight) {\n var legend = this,\n chart = this.chart,\n renderer = chart.renderer,\n options = this.options,\n optionsY = options.y,\n alignTop = options.verticalAlign === 'top',\n padding = this.padding,\n maxHeight = options.maxHeight,\n navOptions = options.navigation,\n animation = pick(navOptions.animation,\n true),\n arrowSize = navOptions.arrowSize || 12,\n pages = this.pages,\n allItems = this.allItems,\n clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n var clipHeight,\n lastY,\n legendItem,\n spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding),\n nav = this.nav,\n clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach(function (item, i) {\n legendItem = item.legendItem || {};\n var y = legendItem.y || 0,\n h = Math.round(legendItem.label.getBBox().height);\n var len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n legendItem.pageIx = len - 1;\n if (lastY) {\n (allItems[i - 1].legendItem || {}).pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed\n y + h - pages[len - 1] > clipHeight &&\n // and will fully fit inside a new page\n h <= clipHeight) {\n pages.push(y);\n legendItem.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode && navOptions.style) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n };\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation.\n *\n */\n Legend.prototype.scroll = function (scrollBy, animation) {\n var _this = this;\n var chart = this.chart,\n pages = this.pages,\n pageCount = pages.length,\n clipHeight = this.clipHeight,\n navOptions = this.options.navigation,\n pager = this.pager,\n padding = this.padding;\n var currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'inherit'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n var animOptions = animObject(pick(animation,\n chart.renderer.globalAnimation,\n true));\n syncTimeout(function () {\n fireEvent(_this, 'afterScroll', { currentPage: currentPage });\n }, animOptions.duration);\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendLabel\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n Legend.prototype.setItemEvents = function (item, legendLabel, useHTML) {\n var legend = this,\n legendItem = item.legendItem || {},\n boxWrapper = legend.chart.renderer.boxWrapper,\n isPoint = item instanceof Point,\n activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active',\n styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendElements = useHTML ?\n [legendLabel,\n legendItem.symbol] :\n [legendItem.group];\n var setOtherItemsState = function (state) {\n legend.allItems.forEach(function (otherItem) {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach(function (otherItem) {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n for (var _i = 0, legendElements_1 = legendElements; _i < legendElements_1.length; _i++) {\n var element = legendElements_1[_i];\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendLabel.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendLabel.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n var strLegendItemClick = 'legendItemClick',\n fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n Legend.prototype.createCheckboxForItem = function (item) {\n var legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n var target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n };\n return Legend;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.LegendItemObject\n */ /**\n * @name Highcharts.LegendItemObject#item\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#line\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#symbol\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Series color as used by the legend and some series types.\n * @name Highcharts.Series#color\n * @type {Highcharts.ColorType|undefined}\n */ /**\n * Legend data for the series.\n * @name Highcharts.Series#legendItem\n * @type {Highcharts.LegendItemObject|undefined}\n * @since 10.3.0\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var extendClass = U.extendClass,\n merge = U.merge;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, SeriesClass) {\n var defaultPlotOptions = defaultOptions.plotOptions || {},\n seriesOptions = SeriesClass.defaultOptions,\n seriesProto = SeriesClass.prototype;\n seriesProto.type = seriesType;\n if (!seriesProto.pointClass) {\n seriesProto.pointClass = Point;\n }\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = SeriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n var defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/Legend.js'], _modules['Core/MSPointer.js'], _modules['Core/Pointer.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, D, FormatUtilities, Foundation, H, Legend, MSPointer, Pointer, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var numberFormat = FormatUtilities.numberFormat;\n var registerEventOptions = Foundation.registerEventOptions;\n var charts = H.charts,\n doc = H.doc,\n marginNames = H.marginNames,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n attr = U.attr,\n cleanRecursively = U.cleanRecursively,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n var Chart = /** @class */ (function () {\n function Chart(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.legend = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n Chart.chart = function (a, b, c) {\n return new Chart(a, b, c);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.getArgs = function (a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n };\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.init = function (userOptions, callback) {\n // Handle regular options\n var userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n var options = merge(defaultOptions,\n userOptions); // do the merge\n var optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n var zooming = optionsChart.zooming = optionsChart.zooming || {};\n // Other options have no default so just pick\n if (userOptions.chart && !userOptions.chart.zooming) {\n zooming.resetButton = optionsChart.resetZoomButton;\n }\n zooming.key = pick(zooming.key, optionsChart.zoomKey);\n zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);\n zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);\n zooming.type = pick(zooming.type, optionsChart.zoomType);\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentational\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n var chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n };\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n Chart.prototype.initSeries = function (options) {\n var chart = this,\n optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType),\n SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n };\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n Chart.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n };\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n Chart.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n };\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n Chart.prototype.orderSeries = function (fromIndex) {\n var series = this.series;\n for (var i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n };\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n Chart.prototype.isInsidePlot = function (plotX, plotY, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var _b = this,\n inverted = _b.inverted,\n plotBox = _b.plotBox,\n plotLeft = _b.plotLeft,\n plotTop = _b.plotTop,\n scrollablePlotBox = _b.scrollablePlotBox;\n var scrollLeft = 0,\n scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n (_a = this.scrollingContainer, scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop);\n }\n var series = options.series,\n box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox,\n x = options.inverted ? plotY : plotX,\n y = options.inverted ? plotX : plotY,\n e = {\n x: x,\n y: y,\n isInsidePlot: true,\n options: options\n };\n if (!options.ignoreX) {\n var xAxis = (series &&\n (inverted && !this.polar ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n var chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n var yAxis = (options.axis && !options.axis.isXAxis && options.axis) || (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n var chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n };\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial} [animation]\n * If or how to apply animation to the redraw.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n Chart.prototype.redraw = function (animation) {\n fireEvent(this, 'beforeRedraw');\n var chart = this,\n axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [],\n series = chart.series,\n pointer = chart.pointer,\n legend = chart.legend,\n legendUserOptions = chart.userOptions.legend,\n renderer = chart.renderer,\n isHiddenChart = renderer.isHidden(),\n afterRedraw = [];\n var hasDirtyStacks,\n hasStackedSeries,\n i,\n isDirtyBox = chart.isDirtyBox,\n redrawLegend = chart.isDirtyLegend,\n serie;\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n var key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n };\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n Chart.prototype.get = function (id) {\n var series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n var ret = \n // Search axes\n find(this.axes,\n itemById) ||\n // Search series\n find(this.series,\n itemById);\n // Search points\n for (var i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n };\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n Chart.prototype.getAxes = function () {\n var chart = this,\n options = this.options,\n xAxisOptions = options.xAxis = splat(options.xAxis || {}),\n yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n var optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n };\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array}\n * The currently selected points.\n */\n Chart.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (acc, series) {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach(function (point) {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n };\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array}\n * The currently selected series.\n */\n Chart.prototype.getSelectedSeries = function () {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n };\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n Chart.prototype.setTitle = function (titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n };\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n Chart.prototype.applyDescription = function (name, explicitOptions) {\n var chart = this;\n // Default style\n var style = name === 'title' ? {\n color: \"#333333\" /* Palette.neutralColor80 */,\n fontSize: this.options.isStock ? '16px' : '18px' // #2944\n } : {\n color: \"#666666\" /* Palette.neutralColor60 */\n };\n // Merge default options with explicit options\n var options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style: style }),\n this.options[name],\n explicitOptions);\n var elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n var fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n };\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n Chart.prototype.layOutTitles = function (redraw) {\n var titleOffset = [0, 0, 0],\n renderer = this.renderer,\n spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n var title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n var titleSize,\n height;\n if (title) {\n if (!this.styledMode) {\n titleSize = (titleOptions.style &&\n titleOptions.style.fontSize);\n }\n titleSize = renderer.fontMetrics(titleSize, title).b;\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n titleSize :\n offset + titleSize,\n height: height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n var requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n };\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n Chart.prototype.getChartSize = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n widthOption = optionsChart.width,\n heightOption = optionsChart.height,\n renderTo = chart.renderTo;\n // Get inner width and height\n if (!defined(widthOption)) {\n chart.containerWidth = getStyle(renderTo, 'width');\n }\n if (!defined(heightOption)) {\n chart.containerHeight = getStyle(renderTo, 'height');\n }\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || chart.containerWidth || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (chart.containerHeight > 1 ?\n chart.containerHeight :\n 400));\n };\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n Chart.prototype.temporaryDisplay = function (revert) {\n var node = this.renderTo,\n tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n };\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n Chart.prototype.setClassName = function (className) {\n this.container.className = 'highcharts-container ' + (className || '');\n };\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n Chart.prototype.getContainer = function () {\n var chart = this,\n options = chart.options,\n optionsChart = options.chart,\n indexAttrName = 'data-highcharts-chart',\n containerId = uniqueKey();\n var containerStyle,\n renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n var oldChartIndex = pInt(attr(renderTo,\n indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n var chartWidth = chart.chartWidth;\n var chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n var container = createElement('div', {\n id: containerId\n },\n containerStyle,\n renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n var Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (var key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n };\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n Chart.prototype.getMargins = function (skipAxes) {\n var _a = this,\n spacing = _a.spacing,\n margin = _a.margin,\n titleOffset = _a.titleOffset;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n };\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n Chart.prototype.getAxisMargins = function () {\n var chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0],\n colorAxis = chart.colorAxis,\n margin = chart.margin,\n getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n };\n /**\n * Reflows the chart to its container. By default, the chart reflows\n * automatically to its container following a `window.resize` event, as per\n * the [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option. However, there are no reliable events for div resize, so if the\n * container is resized without a window resize event, this must be called\n * explicitly.\n *\n * @sample highcharts/members/chart-reflow/\n * Resize div and reflow\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n Chart.prototype.reflow = function (e) {\n var chart = this, optionsChart = chart.options.chart, renderTo = chart.renderTo, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), width = optionsChart.width || getStyle(renderTo, 'width'), height = optionsChart.height || getStyle(renderTo, 'height'), target = e ? e.target : win;\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in IE8 and\n // Opera, win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n width &&\n height &&\n (target === win || target === doc)) {\n if (width !== chart.containerWidth ||\n height !== chart.containerHeight) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerWidth = width;\n chart.containerHeight = height;\n }\n };\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n Chart.prototype.setReflow = function (reflow) {\n var chart = this;\n if (reflow !== false && !this.unbindReflow) {\n this.unbindReflow = addEvent(win, 'resize', function (e) {\n // a removed event listener still runs in Edge and IE if the\n // listener was removed while the event runs, so check if the\n // chart is not destroyed (#11609)\n if (chart.options) {\n chart.reflow(e);\n }\n });\n addEvent(this, 'destroy', this.unbindReflow);\n }\n else if (reflow === false && this.unbindReflow) {\n // Unbind and unset\n this.unbindReflow = this.unbindReflow();\n }\n // The following will add listeners to re-fit the chart before and after\n // printing (#2284). However it only works in WebKit. Should have worked\n // in Firefox, but not supported in IE.\n /*\n if (win.matchMedia) {\n win.matchMedia('print').addListener(function reflow() {\n chart.reflow();\n });\n }\n //*/\n };\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n Chart.prototype.setSize = function (width, height, animation) {\n var chart = this,\n renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n var globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n };\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n Chart.prototype.setChartSize = function (skipAxes) {\n var chart = this,\n inverted = chart.inverted,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n optionsChart = chart.options.chart,\n spacing = chart.spacing,\n clipOffset = chart.clipOffset;\n var plotLeft,\n plotTop,\n plotWidth,\n plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n var plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2),\n clipX = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[3]) / 2),\n clipY = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n };\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n Chart.prototype.resetMargins = function () {\n fireEvent(this, 'resetMargins');\n var chart = this,\n chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n var value = chartOptions[target],\n values = isObject(value) ? value : [value,\n value,\n value,\n value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n };\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n Chart.prototype.drawChartBox = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n styledMode = chart.styledMode,\n plotBGImage = chart.plotBGImage,\n chartBackgroundColor = optionsChart.backgroundColor,\n plotBackgroundColor = optionsChart.plotBackgroundColor,\n plotBackgroundImage = optionsChart.plotBackgroundImage,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotBox = chart.plotBox,\n clipRect = chart.clipRect,\n clipBox = chart.clipBox;\n var chartBackground = chart.chartBackground,\n plotBackground = chart.plotBackground,\n plotBorder = chart.plotBorder,\n chartBorderWidth,\n mgn,\n bgAttr,\n verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n };\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n Chart.prototype.propFromSeries = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n seriesOptions = chart.options.series;\n var i,\n klass,\n value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[(optionsChart.type || optionsChart.defaultSeriesType)];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n };\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n Chart.prototype.linkSeries = function () {\n var chart = this,\n chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n var linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries');\n };\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n Chart.prototype.renderSeries = function () {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n };\n /**\n * Render labels for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderLabels\n */\n Chart.prototype.renderLabels = function () {\n var chart = this,\n labels = chart.options.labels;\n if (labels.items) {\n labels.items.forEach(function (label) {\n var style = extend(labels.style,\n label.style),\n x = pInt(style.left) + chart.plotLeft,\n y = pInt(style.top) + chart.plotTop + 12;\n // delete to prevent rewriting in IE\n delete style.left;\n delete style.top;\n chart.renderer.text(label.html, x, y)\n .attr({ zIndex: 2 })\n .css(style)\n .add();\n });\n }\n };\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n Chart.prototype.render = function () {\n var chart = this,\n axes = chart.axes,\n colorAxis = chart.colorAxis,\n renderer = chart.renderer,\n options = chart.options,\n renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n var correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n /**\n * The overview of the chart's series.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n chart.legend = new Legend(chart, options.legend);\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n var tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n var tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n var redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n var redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .add();\n }\n chart.renderSeries();\n // Labels\n chart.renderLabels();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n };\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n Chart.prototype.addCredits = function (credits) {\n var chart = this,\n creds = merge(true,\n this.options.credits,\n credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n };\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n Chart.prototype.destroy = function () {\n var chart = this,\n axes = chart.axes,\n series = chart.series,\n container = chart.container,\n parentNode = container && container.parentNode;\n var i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n var prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n };\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n Chart.prototype.firstRender = function () {\n var chart = this,\n options = chart.options;\n // Hook for oldIE to check whether the chart is ready to render\n if (chart.isReadyToRender && !chart.isReadyToRender()) {\n return;\n }\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n // depends on inverted and on margins being set\n if (Pointer) {\n if (MSPointer.isRequired()) {\n chart.pointer = new MSPointer(chart, options);\n }\n else {\n /**\n * The Pointer that keeps track of mouse and touch interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n chart.pointer = new Pointer(chart, options);\n }\n }\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n };\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n Chart.prototype.onload = function () {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow(this.options.chart.reflow);\n }\n this.warnIfA11yModuleNotLoaded();\n // Don't run again\n this.hasLoaded = true;\n };\n /**\n * Emit console warning if the a11y module is not loaded.\n */\n Chart.prototype.warnIfA11yModuleNotLoaded = function () {\n var _a = this,\n options = _a.options,\n title = _a.title;\n if (options && !this.accessibility) {\n // Make chart behave as an image with the title as alt text\n this.renderer.boxWrapper.attr({\n role: 'img',\n 'aria-label': ((title && title.element.textContent) || ''\n // #17753, < is not allowed in SVG attributes\n ).replace(/} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n Chart.prototype.addSeries = function (options, redraw, animation) {\n var chart = this;\n var series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n };\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n Chart.prototype.addAxis = function (options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.addColorAxis = function (options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis | Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.createAxis = function (type, options) {\n var axis = new Axis(this,\n merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n };\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n Chart.prototype.showLoading = function (str) {\n var chart = this,\n options = chart.options,\n loadingOptions = options.loading,\n setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n var loadingDiv = chart.loadingDiv,\n loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n };\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n Chart.prototype.hideLoading = function () {\n var options = this.options,\n loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n };\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n Chart.prototype.update = function (options, redraw, oneToOne, animation) {\n var chart = this,\n adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n },\n isResponsiveOptions = options.isResponsiveOptions,\n itemsForRemoval = [];\n var updateAllAxes,\n updateAllSeries,\n runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n var optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('reflow' in optionsChart) {\n chart.setReflow(optionsChart.reflow);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n var indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n var hasId = defined(newOptions.id);\n var item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n var newWidth = optionsChart && optionsChart.width;\n var newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height,\n newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n };\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setSubtitle = function (options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n };\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setCaption = function (options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n };\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n Chart.prototype.showResetZoom = function () {\n var chart = this,\n lang = defaultOptions.lang,\n btnOptions = chart.options.chart.zooming.resetButton,\n theme = btnOptions.theme,\n alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n };\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n Chart.prototype.zoomOut = function () {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n };\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n Chart.prototype.zoom = function (event) {\n var chart = this,\n pointer = chart.pointer;\n var displayButton = false,\n hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n var axis = axisData.axis,\n isXAxis = axis.isXAxis;\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] &&\n (defined(pointer.mouseDownX) &&\n defined(pointer.mouseDownY) &&\n chart.isInsidePlot(pointer.mouseDownX - chart.plotLeft, pointer.mouseDownY - chart.plotTop, { axis: axis })) || !defined(chart.inverted ? pointer.mouseDownX : pointer.mouseDownY)) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n var resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n };\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n Chart.prototype.pan = function (e, panning) {\n var chart = this,\n hoverPoints = chart.hoverPoints,\n panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }),\n chartOptions = chart.options.chart;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n var type = panningOptions.type;\n var doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n var axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n var nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n var horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n var newMin = flipped ? panMax : panMin,\n newMax = flipped ? panMin : panMax,\n panningState = axis.panningState,\n spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n var processedData = series.getProcessedData(true),\n dataExtremes = series.getExtremes(processedData.yData,\n true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n var paddedMin = Math.min(pick(panningState && panningState.startMin,\n extremes.dataMin),\n halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n var paddedMax = Math.max(pick(panningState && panningState.startMax,\n extremes.dataMax),\n halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, function (pos, down) {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n };\n return Chart;\n }());\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n *\n * @private\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n * @private\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @private\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#axis\n * @type {Highcharts.Axis|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawLineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function drawLineMarker(legend) {\n var legendItem = this.legendItem = this.legendItem || {},\n options = this.options,\n symbolWidth = legend.symbolWidth,\n symbolHeight = legend.symbolHeight,\n generalRadius = symbolHeight / 2,\n renderer = this.chart.renderer,\n legendItemGroup = legendItem.group,\n verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n var attr = {},\n legendSymbol,\n markerOptions = options.marker,\n lineSizer = 0;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': Math.min(options.lineWidth || 0, 24)\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n else if (options.linecap !== 'square') {\n attr['stroke-linecap'] = 'round';\n }\n }\n legendItem.line = renderer\n .path()\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n if (attr['stroke-linecap']) {\n lineSizer = Math.min(legendItem.line.strokeWidth(), symbolWidth) / 2;\n }\n legendItem.line\n .attr({\n d: [\n ['M', lineSizer, verticalCenter],\n ['L', symbolWidth - lineSizer, verticalCenter]\n ]\n });\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n var radius = Math.min(pick(markerOptions.radius,\n generalRadius),\n generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n legendItem.symbol = legendSymbol = renderer\n .symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, extend({ context: 'legend' }, markerOptions))\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.drawLineMarker = drawLineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawRectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function drawRectangle(legend, item) {\n var legendItem = item.legendItem || {},\n options = legend.options,\n symbolHeight = legend.symbolHeight,\n square = options.squareSymbol,\n symbolWidth = square ? symbolHeight : legend.symbolWidth;\n legendItem.symbol = this.chart.renderer\n .rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n })\n .add(legendItem.group);\n }\n LegendSymbol.drawRectangle = drawRectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n var seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n *\n * @private\n */\n lineWidth: 2,\n /**\n * For some series, there is a limit that shuts down animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`. This option works if animation\n * is fired on individual points, not on a group of points like e.g. during\n * the initial animation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animationlimit/\n * Animation limit on updating individual points\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds. (Defaults to\n * `1000`)\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below. (Defaults to `easeInOutSine`)\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Highcharts.AnimationOptionsObject}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @ignore-option */\n duration: 1000\n },\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element. Changes to the series' color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so its\n * graphic representations are given the class name `highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @sample highcharts/series-line/linecap/\n * Line cap comparison\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line and scatter-like series. Properties\n * like `fillColor`, `lineColor` and `lineWidth` define the visual\n * appearance of the markers. The `symbol` option defines the shape. Other\n * series types, like column series, don't have markers, but have visual\n * options on the series level instead.\n *\n * In styled mode, the markers can be styled with the `.highcharts-point`,\n * `.highcharts-point-hover` and `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * Returning `false` cancels the default behavior, which is to show a\n * tooltip for the point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Styled mode example\n * @sample {highmaps} maps/demo/color-axis\n * Choropleth map with data labels\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Using data labels as map markers\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is displayed\n * for the `dataLabels`. The animation can also be set as a\n * configuration object. Please note that this option only applies to\n * the initial animation.\n *\n * For other animations, see [chart.animation](#chart.animation) and the\n * animation parameter under the API methods. The following properties\n * are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds. Set to `0` to render the\n * data labels immediately. As `undefined` inherits defer time from the\n * [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If `right`,\n * the right side of the label should be touching the point. For points\n * with an extent, like columns, the alignments also dictates how to\n * align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside) option. Can be one of\n * `left`, `center` or `right`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/series-datalabels-align-left/ Left\n * aligned\n * @sample {highcharts}\n * highcharts/plotoptions/bar-datalabels-align-inside-bar/ Data\n * labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label. Setting it to\n * `auto` will use the point's color.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Data labels as map markers\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Setting it to `auto` will use\n * the point's color. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n borderWidth: 0,\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * This options is deprecated.\n * Use [style.color](#plotOptions.series.dataLabels.style) instead.\n *\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @see [style.color](#plotOptions.series.dataLabels.style)\n *\n * @type {Highcharts.ColorType}\n * @deprecated 10.3\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n * If set to a number, a defer time is specified in milliseconds.\n *\n * @sample highcharts/plotoptions/animation-defer\n * Set defer time\n *\n * @since 4.0.0\n * @type {boolean|number}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points\n * i.e `heatmap` or `tilemap`. Does not work with series that don't\n * display null points, like `line`, `column`, `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullFormatter` can be applied only to series which support\n * displaying null points i.e `heatmap` or `tilemap`. Does not work\n * with series that don't display null points, like `line`, `column`,\n * `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The z index of the data labels. Use a `zIndex` of 6 to display it above\n * the series, or use a `zIndex` of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.zIndex\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 50\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states, symbol\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Custom colorKey with color axis stops\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var hasTouch = H.hasTouch,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n cleanRecursively = U.cleanRecursively,\n correctFloat = U.correctFloat,\n defined = U.defined,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n var Series = /** @class */ (function () {\n function Series() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n Series.prototype.init = function (chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n var series = this,\n chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n var options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n var events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n var lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n };\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n Series.prototype.is = function (type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n };\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n Series.prototype.insert = function (collection) {\n var indexOption = this.options.index;\n var i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n };\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n Series.prototype.bindAxes = function () {\n var series = this,\n seriesOptions = series.options,\n chart = series.chart;\n var axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n var index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n };\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n Series.prototype.updateParallelArrays = function (point, i) {\n var series = point.series,\n args = arguments,\n fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n var val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], Array.prototype.slice.call(args, 2));\n };\n series.parallelArrays.forEach(fn);\n };\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n Series.prototype.hasData = function () {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n };\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n Series.prototype.autoIncrement = function (x) {\n var options = this.options,\n pointIntervalUnit = options.pointIntervalUnit,\n relativeXValue = options.relativeXValue,\n time = this.chart.time;\n var xIncrement = this.xIncrement,\n date,\n pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n };\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n Series.prototype.setDataSortingOptions = function () {\n var options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n };\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n Series.prototype.setOptions = function (itemOptions) {\n var chart = this.chart,\n chartOptions = chart.options,\n plotOptions = chartOptions.plotOptions,\n userOptions = chart.userOptions || {},\n seriesUserOptions = merge(itemOptions),\n styledMode = chart.styledMode,\n e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n var zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n var typeOptions = e.plotOptions[this.type],\n userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n var options = merge(typeOptions,\n plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type],\n seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n var zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n };\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n Series.prototype.getName = function () {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n };\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n Series.prototype.getCyclic = function (prop, value, defaults) {\n var chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n var i,\n setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n };\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n Series.prototype.getColor = function () {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* Palette.neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n };\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n Series.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n Series.prototype.getSymbol = function () {\n var seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n Series.prototype.findPointIndex = function (optionsObject, fromIndex) {\n var id = optionsObject.id,\n x = optionsObject.x,\n oldData = this.points,\n dataSorting = this.options.dataSorting;\n var matchingPoint,\n matchedById,\n pointIndex;\n if (id) {\n var item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n var matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.index === optionsObject.index; };\n if (dataSorting && dataSorting.matchByName) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.name === optionsObject.name; };\n }\n else if (this.options.relativeXValue) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x; };\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n };\n /**\n * Internal function called from setData. If the point count is the same\n * as it was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n Series.prototype.updateData = function (data, animation) {\n var options = this.options,\n dataSorting = options.dataSorting,\n oldData = this.points,\n pointsToAdd = [],\n requireSorting = this.requireSorting,\n equalLength = data.length === oldData.length;\n var hasUpdatedByKey,\n i,\n point,\n lastIndex,\n succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n var optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this },\n pointOptions)) || {};\n var pointIndex;\n // Get the x of the new data point\n var x = optionsObject.x,\n id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && (oldData[i].update)) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n };\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n Series.prototype.setData = function (data, redraw, animation, updatePoints) {\n if (redraw === void 0) { redraw = true; }\n var series = this,\n oldData = series.points,\n oldDataLength = (oldData && oldData.length) || 0,\n options = series.options,\n chart = series.chart,\n dataSorting = options.dataSorting,\n xAxis = series.xAxis,\n turboThreshold = options.turboThreshold,\n xData = this.xData,\n yData = this.yData,\n pointArrayMap = series.pointArrayMap,\n valueCount = pointArrayMap && pointArrayMap.length,\n keys = options.keys;\n var i,\n pt,\n updatedData,\n indexOfX = 0,\n indexOfY = 1,\n firstPoint = null,\n copiedData;\n if (!chart.options.chart.allowMutatingData) { // #4259\n // Remove old reference\n if (options.data) {\n delete series.options.data;\n }\n if (series.userOptions.data) {\n delete series.userOptions.data;\n }\n copiedData = merge(true, data);\n }\n data = copiedData || data || [];\n var dataLength = data.length;\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (chart.options.chart.allowMutatingData &&\n updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.boosted) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n // stray commas in oldIE:\n if (typeof data[i] !== 'undefined') {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n if (oldData[i] && (oldData[i].destroy)) {\n oldData[i].destroy();\n }\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n };\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array} data\n * Force data grouping.\n */\n Series.prototype.sortData = function (data) {\n var series = this,\n options = series.options,\n dataSorting = options.dataSorting,\n sortKey = dataSorting.sortKey || 'y',\n getPointOptionsObject = function (series,\n pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n },\n pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n var sortedData = data.concat().sort(function (a,\n b) {\n var aValue = getNestedProperty(sortKey,\n a);\n var bValue = getNestedProperty(sortKey,\n b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n var options = linkedSeries.options,\n seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n };\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getProcessedData = function (forceExtremesFromAll) {\n var series = this,\n xAxis = series.xAxis,\n options = series.options,\n cropThreshold = options.cropThreshold,\n getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian,\n val2lin = xAxis && xAxis.val2lin,\n isLog = !!(xAxis && xAxis.logarithmic);\n var croppedData,\n cropped,\n cropStart = 0,\n distance,\n closestPointRange,\n i, // loop variable\n xExtremes,\n min,\n max, \n // copied during slice operation:\n processedXData = series.xData,\n processedYData = series.yData,\n throwOnUnsorted = series.requireSorting,\n updatingNames = false;\n var dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = !!(xAxis.categories && !xAxis.names.length);\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n };\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n Series.prototype.processData = function (force) {\n var series = this,\n xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n var processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n };\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n Series.prototype.cropData = function (xData, yData, min, max, cropShoulder) {\n var dataLength = xData.length;\n var i,\n j,\n cropStart = 0,\n cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n };\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n Series.prototype.generatePoints = function () {\n var series = this,\n options = series.options,\n dataOptions = (series.processedData || options.data),\n processedXData = series.processedXData,\n processedYData = series.processedYData,\n PointClass = series.pointClass,\n processedDataLength = processedXData.length,\n cropStart = series.cropStart || 0,\n hasGroupedData = series.hasGroupedData,\n keys = options.keys,\n points = [],\n groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n var dataLength,\n cursor,\n point,\n i,\n data = series.data;\n if (!data && !hasGroupedData) {\n var arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n };\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n Series.prototype.getXExtremes = function (xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n };\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getExtremes = function (yData, forceExtremesFromAll) {\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n xData = this.processedXData || this.xData,\n activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0,\n positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n var xExtremes,\n validValue,\n withinRange,\n x,\n y,\n i,\n j,\n xMin = 0,\n xMax = 0,\n activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n var yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n var dataExtremes = {\n activeYData: activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes: dataExtremes });\n return dataExtremes;\n };\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n Series.prototype.applyExtremes = function () {\n var dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n };\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array} data\n * Array of options for points\n */\n Series.prototype.getFirstValidPoint = function (data) {\n var dataLength = data.length;\n var i = 0,\n firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n };\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n Series.prototype.translate = function () {\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n var series = this,\n options = series.options,\n stacking = options.stacking,\n xAxis = series.xAxis,\n categories = xAxis.categories,\n enabledDataSorting = series.enabledDataSorting,\n yAxis = series.yAxis,\n points = series.points,\n dataLength = points.length,\n pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement),\n threshold = options.threshold,\n stackThreshold = options.startFromThreshold ? threshold : 0,\n zoneAxis = this.zoneAxis || 'y';\n var i,\n plotX,\n lastPlotX,\n stackIndicator,\n closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n var point = points[i],\n xValue = point.x;\n var pointStack = void 0,\n stackValues = void 0,\n yValue = point.y,\n yBottom = point.low;\n var stack = stacking && yAxis.stacking && yAxis.stacking.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey];\n if (yAxis.positiveValuesOnly &&\n !yAxis.validatePositiveValue(yValue) ||\n xAxis.positiveValuesOnly &&\n !xAxis.validatePositiveValue(xValue)) {\n point.isNull = true;\n }\n /**\n * The translated X value for the point in terms of pixels. Relative\n * to the X axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotX\n * @type {number|undefined}\n */\n point.plotX = plotX = correctFloat(// #5236\n // Get the plotX translation\n limitedRange(xAxis.translate(// #3923\n xValue, 0, 0, 0, 1, pointPlacement, this.type === 'flags')) // #3923\n );\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stack &&\n stack[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull && stackIndicator.key) {\n pointStack = stack[xValue];\n stackValues = pointStack.points[stackIndicator.key];\n }\n if (pointStack && isArray(stackValues)) {\n yBottom = stackValues[0];\n yValue = stackValues[1];\n if (yBottom === stackThreshold &&\n stackIndicator.key === stack[xValue].base) {\n yBottom = pick(isNumber(threshold) ? threshold : yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly &&\n defined(yBottom) &&\n yBottom <= 0) {\n yBottom = void 0;\n }\n point.total = point.stackTotal = pick(pointStack.total);\n point.percentage = defined(point.y) && pointStack.total ?\n (point.y / pointStack.total * 100) : void 0;\n point.stackY = yValue;\n // Place the stack label\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n pointStack.setOffset(series.pointXOffset || 0, series.barW || 0, void 0, void 0, void 0, series.xAxis);\n }\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(yBottom) ?\n limitedRange(yAxis.translate(yBottom, 0, 1, 0, 1)) :\n void 0;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws\n // #3201\n point.plotY = void 0;\n if (isNumber(yValue)) {\n var translated = yAxis.translate(yValue,\n false,\n true,\n false,\n true);\n if (typeof translated !== 'undefined') {\n /**\n * The translated Y value for the point in terms of pixels.\n * Relative to the Y axis position if the series has one,\n * otherwise relative to the plot area. Depending on the\n * series type this value might not be defined.\n * @name Highcharts.Point#plotY\n * @type {number|undefined}\n */\n point.plotY = limitedRange(translated);\n }\n }\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, 0, 0, 0, 1, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = pick(categories && categories[point.x], point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n };\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array}\n * The valid points.\n */\n Series.prototype.getValidPoints = function (points, insideOnly, allowNull) {\n var chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, { inverted: chart.inverted })) {\n return false;\n }\n return point.visible !== false &&\n (allowNull || !point.isNull);\n });\n };\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n Series.prototype.getClipBox = function () {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // If no axes on the series, use global clipBox\n var seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n };\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n Series.prototype.getSharedClipKey = function () {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n };\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n Series.prototype.setClip = function () {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n markerGroup = _a.markerGroup,\n sharedClips = chart.sharedClips,\n renderer = chart.renderer,\n clipBox = this.getClipBox(),\n sharedClipKey = this.getSharedClipKey(); // #4526\n var clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n };\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n Series.prototype.animate = function (init) {\n var _a = this, chart = _a.chart, group = _a.group, markerGroup = _a.markerGroup, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n var animationClipRect = chart.sharedClips[animationClipKey],\n markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n var clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n // The marker clip box. The number 99 is a safe margin to avoid\n // markers being clipped during animation.\n var markerClipBox = {\n x: inverted ? -99 : -99,\n y: inverted ? -99 : -99,\n width: inverted ? chart.plotWidth + 199 : 99,\n height: inverted ? 99 : chart.plotHeight + 199\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n var finalBox = this.getClipBox(),\n step_1 = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step_1) {\n step_1.apply(fx, arguments);\n }\n if (fx.prop === 'width' &&\n markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(inverted ? 'height' : 'width', val + 99);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n };\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n Series.prototype.afterAnimate = function () {\n var _this = this;\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, function (clip, key, sharedClips) {\n if (clip && !_this.chart.container.querySelector(\"[clip-path=\\\"url(#\".concat(clip.id, \")\\\"]\"))) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n };\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n Series.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n styledMode = chart.styledMode,\n colorAxis = series.colorAxis,\n options = series.options,\n seriesMarkerOptions = options.marker,\n markerGroup = series[series.specialGroup || 'markerGroup'],\n xAxis = series.xAxis,\n globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n var i,\n point,\n graphic,\n verb,\n pointMarkerOptions,\n hasPointMarker,\n markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n var shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n var symbol = pick(pointMarkerOptions.symbol,\n series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n var isInside = point.isInside !== false;\n if (!graphic &&\n isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * SVG graphic representing the point in the chart. In\n * some cases it may be a hidden graphic to improve\n * accessibility.\n *\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @see Highcharts.Point#graphics\n *\n * @name Highcharts.Point#graphic\n * @type {Highcharts.SVGElement|undefined}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic) {\n var pointAttr = series.pointAttribs(point, ((styledMode || !point.selected) ?\n void 0 :\n 'select'));\n if (!styledMode) {\n graphic[verb](pointAttr);\n }\n else if (colorAxis) { // #14114\n graphic['css']({\n fill: pointAttr.fill\n });\n }\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n };\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n Series.prototype.markerAttribs = function (point, state) {\n var seriesOptions = this.options,\n seriesMarkerOptions = seriesOptions.marker,\n pointMarkerOptions = point.marker || {},\n symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol),\n attribs = {};\n var seriesStateOptions,\n pointStateOptions,\n radius = pick(pointMarkerOptions.radius,\n seriesMarkerOptions && seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius && radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n var pos = point.pos();\n if (isNumber(radius) && pos) {\n attribs.x = pos[0] - radius;\n attribs.y = pos[1] - radius;\n if (seriesOptions.crisp) {\n // Math.floor for #1843:\n attribs.x = Math.floor(attribs.x);\n }\n }\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n };\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n Series.prototype.pointAttribs = function (point, state) {\n var seriesMarkerOptions = this.options.marker,\n pointOptions = point && point.options,\n pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}),\n pointColorOption = pointOptions && pointOptions.color,\n pointColor = point && point.color,\n zoneColor = point && point.zone && point.zone.color;\n var seriesStateOptions,\n pointStateOptions,\n color = this.color,\n fill,\n stroke,\n strokeWidth = pick(pointMarkerOptions.lineWidth,\n seriesMarkerOptions.lineWidth),\n opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n };\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n Series.prototype.destroy = function (keepEventsForUpdate) {\n var series = this,\n chart = series.chart,\n issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent),\n data = series.data || [];\n var destroy,\n i,\n point,\n axis;\n // add event hook\n fireEvent(series, 'destroy', { keepEventsForUpdate: keepEventsForUpdate });\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach(function (clip) { return clip.destroy(); });\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n };\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n Series.prototype.applyZones = function () {\n var series = this,\n chart = this.chart,\n renderer = chart.renderer,\n zones = this.zones,\n clips = (this.clips || []),\n graph = this.graph,\n area = this.area,\n plotSizeMax = Math.max(chart.plotWidth,\n chart.plotHeight),\n axis = this[(this.zoneAxis || 'y') + 'Axis'],\n inverted = chart.inverted;\n var translatedFrom,\n translatedTo,\n clipAttr,\n extremes,\n reversed,\n horiz,\n pxRange,\n pxPosMin,\n pxPosMax,\n zoneArea,\n zoneGraph,\n ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: plotSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: plotSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n // VML SUPPPORT\n if (inverted && renderer.isVML) {\n if (axis.isXAxis) {\n clipAttr = {\n x: 0,\n y: reversed ? pxPosMin : pxPosMax,\n height: clipAttr.width,\n width: chart.chartWidth\n };\n }\n else {\n clipAttr = {\n x: (clipAttr.y -\n chart.plotLeft -\n chart.spacingBox.x),\n y: 0,\n width: clipAttr.height,\n height: chart.chartHeight\n };\n }\n }\n // END OF VML SUPPORT\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show();\n }\n if (area) {\n area.show();\n }\n }\n };\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n Series.prototype.plotGroup = function (prop, name, visibility, zIndex, parent) {\n var group = this[prop];\n var isNew = !group,\n attrs = {\n visibility: visibility,\n zIndex: zIndex || 0.1 // IE8 and pointer logic use this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox(name));\n return group;\n };\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n Series.prototype.getPlotBox = function (name) {\n var horAxis = this.xAxis,\n vertAxis = this.yAxis;\n var chart = this.chart,\n inverted = (chart.inverted &&\n !chart.polar &&\n horAxis &&\n this.invertible !== false &&\n name === 'series');\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n horAxis = vertAxis;\n vertAxis = this.xAxis;\n }\n return {\n translateX: horAxis ? horAxis.left : chart.plotLeft,\n translateY: vertAxis ? vertAxis.top : chart.plotTop,\n rotation: inverted ? 90 : 0,\n rotationOriginX: inverted ?\n (horAxis.len - vertAxis.len) / 2 :\n 0,\n rotationOriginY: inverted ?\n (horAxis.len + vertAxis.len) / 2 :\n 0,\n scaleX: inverted ? -1 : 1,\n scaleY: 1\n };\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n Series.prototype.removeEvents = function (keepEventsForUpdate) {\n var series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n };\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n Series.prototype.render = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n animOptions = animObject(options.animation),\n visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex,\n hasRendered = series.hasRendered,\n chartSeriesGroup = chart.seriesGroup,\n inverted = chart.inverted;\n // Animation doesn't work in IE8 quirks when the group div is\n // hidden, and looks bad in other oldIE\n var animDuration = (!series.finishedAnimating && chart.renderer.isSVG) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n var group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n };\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n Series.prototype.redraw = function () {\n // Cache it here as it is set to false in render, but used after\n var wasDirty = this.isDirty || this.isDirtyData;\n this.translate();\n this.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n };\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n Series.prototype.searchPoint = function (e, compareX) {\n var series = this,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n };\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n Series.prototype.buildKDTree = function (e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n var series = this,\n dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n var length = points && points.length;\n var axis,\n median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n Series.prototype.searchKDTree = function (point, compareX, e) {\n var series = this,\n kdX = this.kdAxisArray[0],\n kdY = this.kdAxisArray[1],\n kdComparer = compareX ? 'distX' : 'dist',\n kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n var x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null,\n y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null,\n r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n var point = tree.point,\n axis = series.kdAxisArray[depth % dimensions];\n var nPoint1,\n nPoint2,\n ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n var tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide whether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n };\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n Series.prototype.pointPlacementToXValue = function () {\n var _a = this,\n _b = _a.options,\n pointPlacement = _b.pointPlacement,\n pointRange = _b.pointRange,\n axis = _a.xAxis;\n var factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n };\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n Series.prototype.isPointInside = function (point) {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n };\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n Series.prototype.drawTracker = function () {\n var series = this,\n options = series.options,\n trackByArea = options.trackByArea,\n trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart,\n pointer = chart.pointer,\n renderer = chart.renderer,\n snap = chart.options.tooltip.snap,\n tracker = series.tracker,\n onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE6: 0.002\n * IE7: 0.002\n * IE8: 0.002\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n var i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'inherit' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n Series.prototype.addPoint = function (options, redraw, shift, animation, withEvent) {\n var series = this,\n seriesOptions = series.options,\n data = series.data,\n chart = series.chart,\n xAxis = series.xAxis,\n names = xAxis && xAxis.hasNames && xAxis.names,\n dataOptions = seriesOptions.data,\n xData = series.xData;\n var isInTheMiddle,\n i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n var point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n var x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', i, 0, 0);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle ||\n // When processedData is present we need to splice an empty slot\n // into series.data, otherwise generatePoints won't pick it up.\n series.processedData) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && (data[0].remove)) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n };\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n Series.prototype.removePoint = function (i, redraw, animation) {\n var series = this,\n data = series.data,\n point = data[i],\n points = series.points,\n chart = series.chart,\n remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', i, 1);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n Series.prototype.remove = function (redraw, animation, withEvent, keepEvents) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries();\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n Series.prototype.update = function (options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n var series = this,\n chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions,\n initialType = series.initialType || series.type,\n plotOptions = chart.options.plotOptions,\n initialSeriesProto = seriesTypes[initialType].prototype,\n groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup',\n 'shadowGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false },\n kinds = {};\n var seriesOptions,\n n,\n preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ],\n newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n var keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n options.joinBy ||\n options.mapData || // #11636\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedData', // #17057\n 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Treemap\n 'level', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n var casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n var ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n var marker = seriesOptions.marker,\n dataLabels = seriesOptions.dataLabels,\n oldMarker = oldOptions.marker || {};\n // If the marker got disabled or changed its symbol, width or\n // height - destroy\n if (marker && (marker.enabled === false ||\n oldMarker.symbol !== marker.symbol || // #10870, #15946\n oldMarker.height !== marker.height || // #16274\n oldMarker.width !== marker.width // #16274\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n for (var _a = 0, _b = this.points; _a < _b.length; _a++) {\n var point = _b[_a];\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n };\n /**\n * Used from within series.update\n * @private\n */\n Series.prototype.setName = function (name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n };\n /**\n * Check if the option has changed.\n * @private\n */\n Series.prototype.hasOptionChanged = function (optionName) {\n var chart = this.chart,\n option = this.options[optionName],\n plotOptions = chart.options.plotOptions,\n oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n };\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n Series.prototype.onMouseOver = function () {\n var series = this,\n chart = series.chart,\n hoverSeries = chart.hoverSeries,\n pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n };\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n Series.prototype.onMouseOut = function () {\n // trigger the event only if listeners exist\n var series = this,\n options = series.options,\n chart = series.chart,\n tooltip = chart.tooltip,\n hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n };\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n Series.prototype.setState = function (state, inherit) {\n var series = this,\n options = series.options,\n graph = series.graph,\n inactiveOtherPoints = options.inactiveOtherPoints,\n stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation),\n series.chart.options.chart.animation);\n var attribs,\n lineWidth = options.lineWidth,\n i = 0,\n opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle && isNumber(lineWidth)) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n };\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n Series.prototype.setAllPointsToState = function (state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n };\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.setVisible = function (vis, redraw) {\n var series = this,\n chart = series.chart,\n ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries,\n oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n var showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (series.legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n };\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.show = function () {\n this.setVisible(true);\n };\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n Series.prototype.hide = function () {\n this.setVisible(false);\n };\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n Series.prototype.select = function (selected) {\n var series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n };\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n Series.prototype.shouldShowTooltip = function (plotX, plotY, options) {\n if (options === void 0) { options = {}; }\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n };\n Series.defaultOptions = SeriesDefaults;\n /**\n * Registry of all available series types.\n *\n * @name Highcharts.Series.types\n * @type {Highcharts.Dictionary}\n */\n Series.types = SeriesRegistry.seriesTypes;\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Registers a series class to be accessible via `Series.types`.\n *\n * @function Highcharts.Series.registerType\n *\n * @param {string} seriesType\n * The series type as an identifier string in lower case.\n *\n * @param {Function} SeriesClass\n * The series class as a class pattern or a constructor function with\n * prototype.\n */\n Series.registerType = SeriesRegistry.registerSeriesType;\n return Series;\n }());\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n drawLegendSymbol: LegendSymbol.drawLineMarker,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n var stop = A.stop;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n var scrollablePlotArea = this.options.chart.scrollablePlotArea,\n scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth,\n scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight,\n scrollablePixelsX,\n scrollablePixelsY,\n corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (defined(scrollablePixelsY)) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n var marginName = corrections[axis.side].name,\n correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName],\n path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n var _this = this;\n var css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n var lastHoverPoint;\n addEvent(this.scrollingContainer, 'scroll', function () {\n if (_this.pointer) {\n delete _this.pointer.chartPosition;\n if (_this.hoverPoint) {\n lastHoverPoint = _this.hoverPoint;\n }\n _this.pointer.runPointActions(void 0, lastHoverPoint, true);\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n var container = this.container,\n fixedRenderer = this.fixedRenderer,\n fixedSelectors = [\n '.highcharts-breadcrumbs-group',\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ],\n axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(\"\" + axisClass + \":not(.highcharts-radial-axis)\", \"\" + axisClass + \"-labels:not(.highcharts-radial-axis-labels)\");\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n var firstTime = !this.fixedDiv,\n chartOptions = this.options.chart,\n scrollableOptions = chartOptions.scrollablePlotArea,\n Renderer = RendererRegistry.getRendererType();\n var fixedRenderer,\n scrollableWidth,\n scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterApplyDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n var axisOffset = this.axisOffset,\n maskTop = this.plotTop - axisOffset[0] - 1,\n maskLeft = this.plotLeft - axisOffset[3] - 1,\n maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1,\n maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1,\n maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0),\n maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0),\n d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d: d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} gantt/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = FU.format;\n var Series = SeriesRegistry.series;\n var destroyObjectProperties = U.destroyObjectProperties,\n pick = U.pick,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n * @private\n */\n var StackItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function StackItem(axis, options, negativeValue, x, stackOption) {\n var inverted = axis.chart.inverted, reversed = axis.reversed;\n this.axis = axis;\n // The stack goes to the left either if the stack has negative value\n // or when axis is reversed. XOR operator.\n var isNegative = (this.isNegative = !!negativeValue !== !!reversed);\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n this.cumulative = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : isNegative ? 'bottom' : 'top'),\n y: options.y,\n x: options.x\n };\n this.textAlign =\n options.textAlign ||\n (inverted ? (!isNegative ? 'left' : 'right') : 'center');\n }\n /**\n * @private\n */\n StackItem.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Renders the stack total label and adds it to the stack label group.\n * @private\n */\n StackItem.prototype.render = function (group) {\n var chart = this.axis.chart,\n options = this.options,\n formatOption = options.format, \n // Format the text in the label.\n str = formatOption ?\n format(formatOption,\n this,\n chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer.label(str, null, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels');\n var attr = {\n r: options.borderRadius || 0,\n text: str,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style || {});\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n };\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n * @private\n */\n StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX, xAxis) {\n var _a = this,\n alignOptions = _a.alignOptions,\n axis = _a.axis,\n label = _a.label,\n options = _a.options,\n textAlign = _a.textAlign,\n chart = axis.chart,\n stackBox = this.getStackBox({\n xOffset: xOffset,\n width: xWidth,\n boxBottom: boxBottom,\n boxTop: boxTop,\n defaultX: defaultX,\n xAxis: xAxis\n }),\n verticalAlign = alignOptions.verticalAlign;\n if (label && stackBox) {\n var labelBox = label.getBBox(),\n padding = label.padding;\n var isJustify = pick(options.overflow, 'justify') === 'justify',\n visible = void 0;\n // Reset alignOptions property after justify #12337\n alignOptions.x = options.x || 0;\n alignOptions.y = options.y || 0;\n // Calculate the adjusted Stack position, to take into consideration\n // The size if the labelBox and vertical alignment as\n // well as the text alignment. It's need to be done to work with\n // default SVGLabel.align/justify methods.\n var _b = this.adjustStackPosition({\n labelBox: labelBox,\n verticalAlign: verticalAlign,\n textAlign: textAlign\n }),\n x = _b.x,\n y = _b.y;\n stackBox.x -= x;\n stackBox.y -= y;\n // Align the label to the adjusted box.\n label.align(alignOptions, false, stackBox);\n // Check if label is inside the plotArea #12294\n visible = chart.isInsidePlot(label.alignAttr.x + alignOptions.x + x, label.alignAttr.y + alignOptions.y + y);\n if (!visible) {\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the stackBox\n Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);\n }\n // Add attr to aviod the default animation of justifyDataLabel.\n // Also add correct rotation with its rotation origin. #15129\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y,\n rotation: options.rotation,\n rotationOriginX: labelBox.width / 2,\n rotationOriginY: labelBox.height / 2\n });\n // Check if the dataLabel should be visible.\n if (pick(!isJustify && options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n }\n label[visible ? 'show' : 'hide']();\n }\n };\n /**\n * Adjust the stack BBox position, to take into consideration the alignment\n * of the dataLabel. This is necessary to make the stackDataLabel work with\n * core methods like `SVGLabel.adjust` and `Series.justifyDataLabel`.\n * @param AdjustStackPositionProps\n * @return {{x: number, y: number}} Adjusted BBox position of the stack.\n */\n StackItem.prototype.adjustStackPosition = function (_a) {\n var labelBox = _a.labelBox,\n verticalAlign = _a.verticalAlign,\n textAlign = _a.textAlign;\n var factorMap = {\n bottom: 0,\n middle: 1,\n top: 2,\n right: 1,\n center: 0,\n left: -1\n },\n verticalAlignFactor = factorMap[verticalAlign],\n textAlignFactor = factorMap[textAlign];\n return {\n x: labelBox.width / 2 + (labelBox.width / 2) * textAlignFactor,\n y: (labelBox.height / 2) * verticalAlignFactor\n };\n };\n /**\n * Get the bbox of the stack.\n * @private\n * @function Highcharts.StackItem#getStackBox\n * @return {BBoxObject} The x, y, height, width of the stack.\n */\n StackItem.prototype.getStackBox = function (stackBoxProps) {\n var stackItem = this,\n axis = this.axis,\n chart = axis.chart,\n boxTop = stackBoxProps.boxTop,\n defaultX = stackBoxProps.defaultX,\n xOffset = stackBoxProps.xOffset,\n width = stackBoxProps.width,\n boxBottom = stackBoxProps.boxBottom,\n totalStackValue = axis.stacking.usePercentage ?\n 100 :\n pick(boxTop,\n this.total, 0),\n y = axis.toPixels(totalStackValue),\n xAxis = stackBoxProps.xAxis || chart.xAxis[0],\n x = pick(defaultX,\n xAxis.toPixels(this.x)) + xOffset,\n yZero = axis.toPixels(boxBottom ? boxBottom : 0),\n height = Math.abs(y - yZero),\n inverted = chart.inverted,\n neg = stackItem.isNegative;\n return inverted ?\n {\n x: (neg ? y : y - height) - chart.plotLeft,\n y: x - chart.plotTop,\n width: height,\n height: width\n } : {\n x: x - chart.plotLeft,\n y: (neg ? y - height : y) - chart.plotTop,\n width: width,\n height: height\n };\n };\n return StackItem;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return StackItem;\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n function chartGetStacks() {\n var chart = this,\n inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach(function (axis) {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach(function (series) {\n var xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n }\n /**\n * @private\n */\n function onAxisDestroy() {\n var stacking = this.stacking;\n if (!stacking) {\n return;\n }\n var stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n if (this.coll === 'yAxis' && !this.stacking) {\n this.stacking = new AxisAdditions(this);\n }\n }\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n function seriesGetStackIndicator(stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.stackKey !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key,\n stackKey: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n }\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n function seriesModifyStacks() {\n var series = this,\n yAxis = series.yAxis,\n stackKey = series.stackKey,\n stacks = yAxis.stacking.stacks,\n processedXData = series.processedXData,\n stacking = series.options.stacking,\n stacker = series[stacking + 'Stacker'];\n var stackIndicator;\n if (stacker) { // Modifier function exists (Series.percentStacker etc.)\n [stackKey, '-' + stackKey].forEach(function (key) {\n var i = processedXData.length,\n x,\n stack,\n pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n stacker.call(series, pointExtremes, stack, i);\n }\n }\n });\n }\n }\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n function seriesPercentStacker(pointExtremes, stack, i) {\n var totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n }\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n function seriesSetGroupedPoints() {\n var stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n seriesProto.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, function (type, key) {\n if (key.slice(-5) === 'group') {\n objectEach(type, function (stack) { return stack.destroy(); });\n delete stacking.stacks[key];\n }\n });\n }\n }\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n function seriesSetStackedPoints(stackingParam) {\n var chart = this.chart,\n stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? \"\" + series.type + \",\".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = stacking === 'group' ?\n chart.yAxis[0] :\n series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;\n var stackIndicator,\n isNegative,\n stack,\n other,\n key,\n pointKey,\n i,\n x,\n y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative =\n pick(stack.cumulative, stackThreshold) + (y || 0);\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n var AxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function AxisAdditions(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n AxisAdditions.prototype.buildStacks = function () {\n var stacking = this;\n var axis = stacking.axis;\n var axisSeries = axis.series;\n var reversedStacks = axis.options.reversedStacks;\n var len = axisSeries.length;\n var actualSeries,\n i;\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n };\n /**\n * @private\n */\n AxisAdditions.prototype.cleanStacks = function () {\n var stacking = this;\n var stacks;\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n };\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n AxisAdditions.prototype.resetStacks = function () {\n var _this = this;\n objectEach(this.stacks, function (type) {\n objectEach(type, function (stack, x) {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < _this.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n };\n /**\n * @private\n */\n AxisAdditions.prototype.renderStackTotals = function () {\n var stacking = this,\n axis = stacking.axis,\n chart = axis.chart,\n renderer = chart.renderer,\n stacks = stacking.stacks,\n stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation,\n animationConfig = getDeferredAnimation(chart,\n stackLabelsAnim || false),\n stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n };\n return AxisAdditions;\n }());\n /* *\n *\n * Composition\n *\n * */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass, ChartClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.getStacks = chartGetStacks;\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getStackIndicator = seriesGetStackIndicator;\n seriesProto_1.modifyStacks = seriesModifyStacks;\n seriesProto_1.percentStacker = seriesPercentStacker;\n seriesProto_1.setGroupedPoints = seriesSetGroupedPoints;\n seriesProto_1.setStackedPoints = seriesSetStackedPoints;\n }\n }\n StackingAxis.compose = compose;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n var LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n LineSeries.prototype.drawGraph = function () {\n var series = this,\n options = this.options,\n graphPath = (this.gappedPath || this.getGraphPath).call(this),\n styledMode = this.chart.styledMode;\n var props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* Palette.neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n var graphKey = prop[0];\n var attribs,\n graph = series[graphKey];\n var verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth || 0,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n // Apply dash style\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n // The reason for the `else if` is that linecaps don't mix well\n // with dashstyle. The gaps get partially filled by the\n // linecap.\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n LineSeries.prototype.getGraphPath = function (points, nullsAsZeroes, connectCliffs) {\n var series = this,\n options = series.options,\n graphPath = [],\n xMap = [];\n var gap,\n step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n var reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n var plotX = point.plotX,\n plotY = point.plotY,\n lastPoint = points[i - 1];\n // the path to this point from the previous\n var pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (point.isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (point.isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n LineSeries.prototype.getZonesGraphs = function (props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n var propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n };\n LineSeries.defaultOptions = merge(Series.defaultOptions, \n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n {\n // nothing here yet\n });\n return LineSeries;\n }(Series));\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation. Changes to a point's color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color is set by the\n * `fill` attribute, so the change in class name won't have a visual effect by\n * default.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n var AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n AreaSeries.prototype.drawGraph = function () {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n _super.prototype.drawGraph.apply(this);\n // Define local variables\n var series = this,\n areaPath = this.areaPath,\n options = this.options,\n zones = this.zones,\n props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone,\n i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n var areaKey = prop[0],\n attribs = {};\n var area = series[areaKey];\n var verb = area ? 'animate' : 'attr';\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n };\n /**\n * @private\n */\n AreaSeries.prototype.getGraphPath = function (points) {\n var getGraphPath = LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n var point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0;\n var top,\n bottom,\n isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n var plotX,\n isNull,\n yBottom;\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (var i = 0, iEnd = points.length; i < iEnd; ++i) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n var topPath = getGraphPath.call(this,\n graphPoints,\n true,\n true);\n bottomPoints.reversed = true;\n var bottomPath = getGraphPath.call(this,\n bottomPoints,\n true,\n true);\n var firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n var areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n var graphPath = getGraphPath\n .call(this,\n graphPoints,\n false,\n connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n };\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n AreaSeries.prototype.getStackPoints = function (points) {\n var series = this,\n segment = [],\n keys = [],\n xAxis = this.xAxis,\n yAxis = this.yAxis,\n stack = yAxis.stacking.stacks[this.stackKey],\n pointMap = {},\n yAxisSeries = yAxis.series,\n seriesLength = yAxisSeries.length,\n upOrDown = yAxis.options.reversedStacks ? 1 : -1,\n seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (var i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n var visibleSeries_1 = yAxisSeries.map(function (s) { return s.visible; });\n keys.forEach(function (x, idx) {\n var y = 0,\n stackPoint,\n stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n var nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull',\n cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff',\n otherStack = stack[keys[idx + direction]];\n var cliff = 0;\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n var i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries_1[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n var i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n };\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0\n });\n return AreaSeries;\n }(LineSeries));\n extend(AreaSeries.prototype, {\n singleStacks: false,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Spline series type.\n *\n * @private\n */\n var SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n SplineSeries.prototype.getPointSpline = function (points, point, i) {\n var \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5,\n denom = smoothing + 1,\n plotX = point.plotX || 0,\n plotY = point.plotY || 0,\n lastPoint = points[i - 1],\n nextPoint = points[i + 1];\n var leftContX,\n leftContY,\n rightContX,\n rightContY;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n var lastX = lastPoint.plotX || 0,\n lastY = lastPoint.plotY || 0,\n nextX = nextPoint.plotX || 0,\n nextY = nextPoint.plotY || 0;\n var correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n var ret = [\n 'C',\n pick(lastPoint.rightContX,\n lastPoint.plotX, 0),\n pick(lastPoint.rightContY,\n lastPoint.plotY, 0),\n pick(leftContX,\n plotX, 0),\n pick(leftContY,\n plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n };\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n return SplineSeries;\n }(LineSeries));\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Spline/SplineSeries.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SplineSeries, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n areaProto = _a.area.prototype;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n var AreaSplineSeries = /** @class */ (function (_super) {\n __extends(AreaSplineSeries, _super);\n function AreaSplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n return _this;\n }\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n return AreaSplineSeries;\n }(SplineSeries));\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n var ColumnSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each column or bar.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n *\n * @product highcharts highstock gantt\n */\n borderRadius: 0,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections,\n this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode,\n the `colors` or `series.colors` arrays are not\n * supported,\n and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`,\n the columns will center in the category,\n ignoring null\n * or missing points. When `false`,\n space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n */\n centerInCategory: false,\n /**\n * Padding between each value groups,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /** @ignore-option */\n marker: null,\n /**\n * The maximum allowed pixel width for a column,\n translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`,\n the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts,\n minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold,\n all\n * points are drawn,\n event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns),\n is that animation is performed on\n * updates. On the other hand,\n when the series contains more points than\n * the crop threshold,\n the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis,\n the range will be 1\n * by default (one category unit). On linear and datetime axes,\n the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically,\n but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode,\n the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /** @ignore-option */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns,\n for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border,\n but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode,\n the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode,\n the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */\n };\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeriesDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, ColumnSeriesDefaults, H, LegendSymbol, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var animObject = A.animObject;\n var color = Color.parse;\n var hasTouch = H.hasTouch,\n noop = H.noop;\n var clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n objectEach = U.objectEach;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n var ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.borderWidth = void 0;\n _this.data = void 0;\n _this.group = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n ColumnSeries.prototype.animate = function (init) {\n var series = this,\n yAxis = this.yAxis,\n options = series.options,\n inverted = this.chart.inverted,\n attr = {},\n translateProp = inverted ?\n 'translateX' :\n 'translateY';\n var translateStart,\n translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxis.pos, yAxis.pos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxis.pos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n };\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n ColumnSeries.prototype.init = function (chart, options) {\n _super.prototype.init.apply(this, arguments);\n var series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n };\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n ColumnSeries.prototype.getColumnMetrics = function () {\n var series = this,\n options = series.options,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks),\n stackGroups = {};\n var stackKey,\n columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n var otherYAxis = otherSeries.yAxis,\n otherOptions = otherSeries.options;\n var columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n var categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ),\n groupPadding = categoryWidth * options.groupPadding,\n groupWidth = categoryWidth - 2 * groupPadding,\n pointOffsetWidth = groupWidth / (columnCount || 1),\n pointWidth = Math.min(options.maxPointWidth || xAxis.len,\n pick(options.pointWidth,\n pointOffsetWidth * (1 - 2 * options.pointPadding))),\n pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0),\n pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount: columnCount\n };\n return series.columnMetrics;\n };\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n ColumnSeries.prototype.crispCol = function (x, y, w, h) {\n var chart = this.chart,\n borderWidth = this.borderWidth,\n xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n var right,\n yCrisp = borderWidth % 2 ? 0.5 : 1;\n if (chart.inverted && chart.renderer.isVML) {\n yCrisp += 1;\n }\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n var bottom = Math.round(y + h) + yCrisp,\n fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n ColumnSeries.prototype.adjustForMissingColumns = function (x, pointWidth, point, metrics) {\n var _this = this;\n var stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n var reversedStacks_1 = this.yAxis.options.reversedStacks;\n var indexInCategory_1 = 0,\n totalInCategory_1 = reversedStacks_1 ? 0 : -metrics.columnCount;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, function (stack) {\n if (typeof point.x === 'number') {\n var stackItem_1 = stack[point.x.toString()];\n if (stackItem_1) {\n var pointValues = stackItem_1.points[_this.index];\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory_1 = totalInCategory_1;\n }\n if (stackItem_1.hasValidPoints) {\n reversedStacks_1 ? // #16169\n totalInCategory_1++ : totalInCategory_1--;\n }\n // If `stacking` is not enabled, look for the index\n }\n else if (isArray(pointValues)) {\n // If there are multiple points with the same X\n // then gather all series in category, and\n // assign index\n var seriesIndexes = Object\n .keys(stackItem_1.points)\n .filter(function (pointKey) {\n // Filter out duplicate X's\n return !pointKey.match(',') &&\n // Filter out null points\n stackItem_1.points[pointKey] &&\n stackItem_1.points[pointKey].length > 1;\n })\n .map(parseFloat)\n .sort(function (a, b) { return b - a; });\n indexInCategory_1 = seriesIndexes.indexOf(_this.index);\n totalInCategory_1 = seriesIndexes.length;\n }\n }\n }\n });\n // Compute the adjusted x position\n var boxWidth = (totalInCategory_1 - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory_1 * metrics.paddedWidth;\n }\n return x;\n };\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n ColumnSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n seriesPointWidth = metrics.width,\n seriesXOffset = series.pointXOffset = metrics.offset,\n dataMin = series.dataMin,\n dataMax = series.dataMax;\n // postprocessed for border width\n var seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance);\n var up,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n pointWidth = seriesPointWidth,\n barX = plotX + seriesXOffset,\n barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints\n // Allow shapeType defined on pointClass level\n point.shapeType = series.pointClass.prototype.shapeType || 'rect';\n point.shapeArgs = series.crispCol.apply(series, point.isNull ?\n // #3169, drilldown from null must have a position to work\n // from #6585, dataLabel should be placed on xAxis, not\n // floating in the middle of the chart\n [barX, translatedThreshold, barW, 0] :\n [barX, barY, barW, barH]);\n });\n };\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n ColumnSeries.prototype.drawGraph = function () {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n };\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n ColumnSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n var stateOptions,\n zone,\n brightness,\n fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill),\n dashstyle = (point && point.options.dashStyle) || options.dashStyle,\n strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0,\n opacity = pick(point && point.opacity,\n options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n var ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n };\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n ColumnSeries.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = this.chart,\n options = series.options,\n renderer = chart.renderer,\n animationLimit = options.animationLimit || 250;\n var shapeArgs;\n // draw the columns\n points.forEach(function (point) {\n var plotY = point.plotY;\n var graphic = point.graphic,\n hasGraphic = !!graphic,\n verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Border radius is not stylable (#6900)\n if (options.borderRadius) {\n graphic[verb]({\n r: options.borderRadius\n });\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow, null, options.stacking && !options.borderRadius);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n };\n /**\n * Draw the tracker for a point.\n * @private\n */\n ColumnSeries.prototype.drawTracker = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n pointer = chart.pointer,\n onMouseOver = function (e) {\n var point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n var dataLabels;\n // Add reference to the point\n points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n ColumnSeries.prototype.remove = function () {\n var series = this,\n chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n };\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, ColumnSeriesDefaults);\n return ColumnSeries;\n }(Series));\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n /**\n * Use a solid rectangle like the area series types\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawLegendSymbol\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Series|Highcharts.Point} item\n * The series (this) or point\n */\n drawLegendSymbol: LegendSymbol.drawRectangle,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var format = F.format;\n var defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var series = this,\n chart = this.chart,\n inverted = this.isCartesian && chart.inverted,\n enabledDataSorting = this.enabledDataSorting,\n plotX = point.plotX,\n plotY = point.plotY,\n rotation = options.rotation,\n align = options.align,\n isInsidePlot = defined(plotX) &&\n defined(plotY) &&\n chart.isInsidePlot(plotX,\n Math.round(plotY), {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n }),\n setStartPos = function (alignOptions) {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point,\n dataLabel,\n isNew,\n isInsidePlot,\n alignOptions);\n }\n };\n var baseline,\n rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n defined(plotX) &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n })));\n var pos = point.pos();\n if (visible && pos) {\n if (rotation) {\n dataLabel.attr({ align: align });\n }\n var bBox = dataLabel.getBBox(true),\n bBoxCorrection = [0, 0];\n baseline = chart.renderer.fontMetrics(chart.styledMode ? void 0 : options.style.fontSize, dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: pos[0],\n y: Math.round(pos[1]),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n bBoxCorrection = [\n bBox.x - Number(dataLabel.attr('x')),\n bBox.y - Number(dataLabel.attr('y'))\n ];\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr);\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n var x = alignAttr.x,\n y = alignAttr.y;\n x += bBoxCorrection[0];\n y += bBoxCorrection[1];\n // Uncomment this block to visualize the bounding boxes used for\n // determining visibility\n /*\n chart.renderer.rect(\n chart.plotLeft + alignAttr.x + bBox.x,\n chart.plotTop + alignAttr.y + bBox.y + 9999,\n bBox.width,\n bBox.height\n ).attr({\n stroke: 'rgba(0, 0, 0, 0.3)',\n 'stroke-width': 0.5\n }).add();\n chart.renderer.circle(\n chart.plotLeft + alignAttr.x,\n chart.plotTop + alignAttr.y,\n 2\n ).attr({\n fill: 'red',\n zIndex: 20\n }).add();\n // */\n visible =\n chart.isInsidePlot(x, y, {\n paneCoordinates: true,\n series: series\n }) &&\n chart.isInsidePlot(x + bBox.width, y + bBox.height, {\n paneCoordinates: true,\n series: series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: pos[0],\n anchorY: pos[1]\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide();\n dataLabel.placed = false; // don't animate back in\n }\n else {\n dataLabel.show();\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n var filter = options.filter;\n if (filter) {\n var op = filter.operator;\n var prop = point[filter.property];\n var val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n var seriesProto = SeriesClass.prototype;\n composedClasses.push(SeriesClass);\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels(points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n seriesOptions = series.options,\n hasRendered = series.hasRendered || 0,\n renderer = chart.renderer,\n _a = chart.options.chart,\n backgroundColor = _a.backgroundColor,\n plotBackgroundColor = _a.plotBackgroundColor,\n contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||\n (isString(backgroundColor) && backgroundColor) ||\n \"#000000\" /* Palette.neutralColor100 */);\n var seriesDlOptions = seriesOptions.dataLabels,\n pointOptions,\n dataLabelsGroup;\n var dataLabelAnim = seriesDlOptions.animation,\n animationConfig = seriesDlOptions.defer ?\n getDeferredAnimation(chart,\n dataLabelAnim,\n series) :\n { defer: 0,\n duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n // Create a separate group for the data labels to avoid rotation\n dataLabelsGroup = series.plotGroup('dataLabelsGroup', 'data-labels', !hasRendered ? 'hidden' : 'inherit', // #5133, #10220\n seriesDlOptions.zIndex || 6);\n dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered) {\n var group = series.dataLabelsGroup;\n if (group) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n group[seriesOptions.animation ? 'animate' : 'attr']({ opacity: 1 }, animationConfig);\n }\n }\n // Make the labels for each point\n points.forEach(function (point) {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach(function (labelOptions, i) {\n // Options for one datalabel\n var labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point,\n labelOptions)),\n connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n var labelConfig,\n formatString,\n labelText,\n style,\n rotation,\n attr,\n dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel,\n isNew = !dataLabel;\n var labelDistance = pick(labelOptions.distance,\n point.labelDistance);\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* Palette.neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n contrastColor;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n var backgroundColor_1 = labelOptions.backgroundColor,\n borderColor = labelOptions.borderColor;\n attr.fill = backgroundColor_1 === 'auto' ?\n point.color :\n backgroundColor_1;\n attr.stroke = borderColor === 'auto' ?\n point.color :\n borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML ||\n (\n // Change from no rotation to rotation and\n // vice versa. Don't use defined() because\n // rotation = 0 means also rotation = undefined\n (!dataLabel.rotation ||\n !labelOptions.rotation) &&\n dataLabel.rotation !== labelOptions.rotation))) {\n isNew = true;\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, 0, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, 0, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n var textPathOptions = labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath;\n if (textPathOptions && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n else if (dataLabel) {\n dataLabel.hide();\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n var chart = this.chart,\n align = options.align,\n verticalAlign = options.verticalAlign,\n padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n var _a = options.x,\n x = _a === void 0 ? 0 : _a,\n _b = options.y,\n y = _b === void 0 ? 0 : _b,\n off,\n justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n var res = [],\n i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n var chart = this.chart,\n inverted = chart.inverted,\n xAxis = this.xAxis,\n reversed = xAxis.reversed,\n labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2,\n pointWidth = point.pointWidth,\n halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var Series = SeriesRegistry.series;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var inverted = this.chart.inverted,\n series = point.series,\n xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0,\n yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs,\n below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold,\n yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking),\n overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n var BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n return BarSeries;\n }(ColumnSeries));\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n var ScatterSeriesDefaults = {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values,\n a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis,\n setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis,\n setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series,\n a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/demo/scatter-jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true,\n the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series,\n or out of the plot area. When false,\n the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false,\n the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock highmaps\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`,\n `pointFormat`,\n * `yDecimals`,\n `xDateFormat`,\n `yPrefix` and `ySuffix`. Unlike other\n * series,\n in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock highmaps\n */\n tooltip: {\n /**\n * @product highcharts highstock\n */\n headerFormat: '\\u25CF ' +\n ' {series.name}
',\n pointFormat: 'x: {point.x}
y: {point.y}
'\n }\n };\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Scatter/ScatterSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ScatterSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n LineSeries = _a.line;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n var ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n ScatterSeries.prototype.applyJitter = function () {\n var series = this,\n jitter = this.options.jitter,\n len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n var rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n var axis,\n plotProp = 'plot' + dim.toUpperCase(),\n min,\n max,\n translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n };\n /**\n * @private\n */\n ScatterSeries.prototype.drawGraph = function () {\n if (this.options.lineWidth) {\n _super.prototype.drawGraph.call(this);\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n };\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, ScatterSeriesDefaults);\n return ScatterSeries;\n }(LineSeries));\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n thickness = options.thickness;\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions: positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n var startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360),\n correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n var PiePoint = /** @class */ (function (_super) {\n __extends(PiePoint, _super);\n function PiePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.labelDistance = void 0;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n PiePoint.prototype.getConnectorPath = function () {\n var labelPosition = this.labelPosition,\n options = this.series.options.dataLabels,\n predefinedShapes = this.connectorShapes;\n var connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.final.x,\n y: labelPosition.final.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n };\n /**\n * @private\n */\n PiePoint.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n /**\n * @private\n */\n PiePoint.prototype.haloPath = function (size) {\n var shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end\n });\n };\n /**\n * Initialize the pie slice.\n * @private\n */\n PiePoint.prototype.init = function () {\n var _this = this;\n _super.prototype.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n var toggleSlice = function (e) {\n _this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n };\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n PiePoint.prototype.isValid = function () {\n return isNumber(this.y) && this.y >= 0;\n };\n /**\n * Toggle the visibility of a pie slice or other data point. Note that this\n * method is available only for some series, like pie, treemap and sunburst.\n *\n * @function Highcharts.Point#setVisible\n *\n * @param {boolean} [vis]\n * True to show the pie slice or other data point, false to hide. If\n * undefined, the visibility is toggled.\n *\n * @param {boolean} [redraw] Whether to redraw the chart after the point is\n * altered. If doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw|chart.redraw()} after.\n *\n */\n PiePoint.prototype.setVisible = function (vis, redraw) {\n var _this = this;\n var series = this.series,\n chart = series.chart,\n ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector', 'shadowGroup'].forEach(function (key) {\n if (_this[key]) {\n _this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n };\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial} [animation]\n * Animation options.\n */\n PiePoint.prototype.slice = function (sliced, redraw, animation) {\n var series = this.series,\n chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n if (this.shadowGroup) {\n this.shadowGroup.animate(this.getTranslate());\n }\n };\n return PiePoint;\n }(Point));\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n var breakAt = connectorPosition.breakAt,\n touchingSliceAt = connectorPosition.touchingSliceAt,\n lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n var touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n var touchingSliceAt = connectorPosition.touchingSliceAt,\n series = this.series,\n pieCenterX = series.center[0],\n plotWidth = series.chart.plotWidth,\n plotLeft = series.chart.plotLeft,\n alignment = labelPosition.alignment,\n radius = this.shapeArgs.r,\n crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1),\n crookX = alignment === 'left' ?\n pieCenterX + radius + (plotWidth + plotLeft -\n pieCenterX - radius) * (1 - crookDistance) :\n plotLeft + (pieCenterX - radius) * crookDistance,\n segmentWithCrook = [\n 'L',\n crookX,\n labelPosition.y\n ];\n var useCrook = true;\n // crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (alignment === 'left' ?\n (crookX > labelPosition.x || crookX < touchingSliceAt.x) :\n (crookX < labelPosition.x || crookX > touchingSliceAt.x)) {\n useCrook = false;\n }\n // assemble the path\n var path = [['M',\n labelPosition.x,\n labelPosition.y]];\n if (useCrook) {\n path.push(segmentWithCrook);\n }\n path.push(['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart,\n * softThreshold, stacking, step, threshold, turboThreshold,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts highmaps\n * @optionparent plotOptions.pie\n *\n * @private\n */\n var PieSeriesDefaults = {\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts highmaps\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts highmaps\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `plotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts highmaps\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'fixedOffset'`\n * (default), `'straight'` and `'crookedLine'`. Using\n * `'crookedLine'` has the most sense (in most of the cases) when\n * `'alignTo'` is set.\n *\n * Users can provide their own method by passing a function instead\n * of a String. 3 arguments are passed to the callback:\n *\n * - Object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by\n * one of the following:\n * `'left'` (pie on the left side of the data label),\n * `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - Object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position\n * of the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form\n * (see the example).\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts highmaps\n */\n connectorShape: 'fixedOffset',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts highmaps\n */\n crookDistance: '70%',\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highmaps\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with\n * sharp break. Works only if `connectorShape` equals to\n * `fixedOffset`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts highmaps\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts highmaps\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Thickness describing the ring size for a donut type chart,\n * overriding [innerSize](#plotOptions.pie.innerSize).\n *\n * @type {number}\n * @default undefined\n * @product highcharts\n * @since 10.1.0\n * @apioption plotOptions.pie.thickness\n * @private\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts highmaps\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers. Setting overridden by thickness.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts highmaps\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts highmaps\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts highmaps\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts highmaps\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts highmaps\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highmaps\n *\n * @private\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts highmaps\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts highmaps\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts highmaps\n */\n brightness: 0.1\n }\n }\n };\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, linkedTo, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts highmaps\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts highmaps\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts highmaps\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts highmaps\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts highmaps\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts highmaps\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Series/Pie/PiePoint.js'], _modules['Series/Pie/PieSeriesDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, LegendSymbol, PiePoint, PieSeriesDefaults, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var getStartAndEndRadians = CU.getStartAndEndRadians;\n var noop = H.noop;\n var clamp = U.clamp,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n var PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.center = void 0;\n _this.data = void 0;\n _this.maxLabelDistance = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n PieSeries.prototype.animate = function (init) {\n var series = this,\n points = series.points,\n startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n var graphic = point.graphic,\n args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n PieSeries.prototype.drawEmpty = function () {\n var start = this.startAngleRad,\n end = this.endAngleRad,\n options = this.options;\n var centerX,\n centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start: start,\n end: end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* Palette.neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n };\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n PieSeries.prototype.drawPoints = function () {\n var renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n };\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n PieSeries.prototype.generatePoints = function () {\n _super.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n PieSeries.prototype.getX = function (y, left, point) {\n var center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n var angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n var x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n PieSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * Draw the data points\n * @private\n */\n PieSeries.prototype.redrawPoints = function () {\n var series = this,\n chart = series.chart,\n renderer = chart.renderer,\n shadow = series.options.shadow;\n var groupTranslation,\n graphic,\n pointAttr,\n shapeArgs;\n this.drawEmpty();\n if (shadow && !series.shadowGroup && !chart.styledMode) {\n series.shadowGroup = renderer\n .g('shadow')\n .attr({ zIndex: -1 })\n .add(series.group);\n }\n // draw the slices\n series.points.forEach(function (point) {\n var animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n var shadowGroup = void 0;\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n // Put the shadow behind all points\n shadowGroup = point.shadowGroup;\n if (shadow && !shadowGroup) {\n shadowGroup = point.shadowGroup = renderer\n .g('shadow')\n .add(series.shadowGroup);\n }\n if (shadowGroup) {\n shadowGroup.attr(groupTranslation);\n }\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' })\n .shadow(shadow, shadowGroup);\n }\n point.delayedRendering = false;\n }\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n };\n /**\n * Utility for sorting data labels.\n * @private\n */\n PieSeries.prototype.sortByAngle = function (points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n };\n /**\n * Do translation for pie slices\n * @private\n */\n PieSeries.prototype.translate = function (positions) {\n fireEvent(this, 'translate');\n this.generatePoints();\n var series = this,\n precision = 1000, // issue #172\n options = series.options,\n slicedOffset = options.slicedOffset,\n connectorOffset = slicedOffset + (options.borderWidth || 0),\n radians = getStartAndEndRadians(options.startAngle,\n options.endAngle),\n startAngleRad = series.startAngleRad = radians.start,\n endAngleRad = series.endAngleRad = radians.end,\n circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points,\n labelDistance = options.dataLabels.distance,\n ignoreHiddenPoint = options.ignoreHiddenPoint,\n len = points.length;\n var finalConnectorOffset,\n start,\n end,\n angle, \n // the x component of the radius vector for a given point\n radiusX,\n radiusY,\n i,\n point,\n cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n var shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n 'final': {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n };\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n PieSeries.prototype.updateTotals = function () {\n var points = this.points,\n len = points.length,\n ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n var i,\n point,\n total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n };\n PieSeries.defaultOptions = merge(Series.defaultOptions, PieSeriesDefaults);\n return PieSeries;\n }(Series));\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series;\n var arrayMax = U.arrayMax,\n clamp = U.clamp,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n var dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n var maxDataLabelWidth = 0,\n dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(PieSeriesClass) === -1) {\n composedClasses.push(PieSeriesClass);\n var pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n var series = this,\n data = series.data,\n chart = series.chart,\n options = series.options.dataLabels || {},\n connectorPadding = options.connectorPadding,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotLeft = chart.plotLeft,\n maxWidth = Math.round(chart.chartWidth / 3),\n seriesCenter = series.center,\n radius = seriesCenter[2] / 2,\n centerY = seriesCenter[1],\n halves = [\n [],\n [] // left\n ],\n overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n var point,\n connectorWidth,\n connector,\n dataLabel,\n dataLabelWidth, \n // labelPos,\n labelPosition,\n labelHeight, \n // divide the points into right and left halves for anti collision\n x,\n y,\n visibility,\n j,\n pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach(function (points, i) {\n var length = points.length,\n positions = [];\n var top,\n bottom,\n naturalY,\n sideOverflow,\n size,\n distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size: size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n // 10 is for the baseline (label vs text)\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n 10)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n labelPosition.final.x = x;\n labelPosition.final.y = y;\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n var isNew = void 0;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n var dataLabel = point.dataLabel,\n _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n var center = this.center,\n options = this.options,\n centerOption = options.center,\n minSize = options.minSize || 80,\n newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n options.thickness ?\n Math.max(0, newSize - options.thickness * 2) :\n Math.max(0, relativeLength(options.innerSize || 0, newSize)), newSize); // #6647\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n var chart = this,\n labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n var dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n var push = function (points) {\n return points.forEach(function (point) {\n if (point.visible) {\n var dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n var options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n };\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n var chart = this,\n len = labels.length,\n ren = chart.renderer,\n label,\n i,\n j,\n label1,\n label2,\n box1,\n box2,\n isLabelAffected = false,\n isIntersectRect = function (box1,\n box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n var pos,\n parent,\n bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0),\n lineHeightCorrection = 0,\n xOffset = 0,\n boxWidth,\n alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so\n // we need to substract the text height from text nodes too.\n lineHeightCorrection = ren\n .fontMetrics(null, label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0 &&\n // #15863 dataLabels are no longer hidden by translation\n label1.visibility !== 'hidden' &&\n label2.visibility !== 'hidden') {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n var complete,\n newOpacity,\n isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n extend(ChartClass.prototype, Additions.prototype);\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /* *\n *\n * Class\n *\n * */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n Additions.prototype.currentOptions = function (options) {\n var chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n var i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n };\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array} matches\n */\n Additions.prototype.matchResponsiveRule = function (rule, matches) {\n var condition = rule.condition,\n fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth,\n Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight,\n Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n };\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n Additions.prototype.setResponsive = function (redraw, reset) {\n var _this = this;\n var options = this.options.responsive,\n currentResponsive = this.currentResponsive;\n var ruleIds = [],\n undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach(function (rule) {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n _this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n var mergedOptions = merge.apply(void 0,\n ruleIds\n .map(function (ruleId) { return find((options || {}).rules || [],\n function (rule) { return (rule._id === ruleId); }); })\n .map(function (rule) { return (rule && rule.chartOptions); }));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n var currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n };\n return Additions;\n }());\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/Defaults.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, Defaults, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n var G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);\n G.Series = Series;\n G.StackItem = StackItem;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n // DefaultOptions\n G.defaultOptions = Defaults.defaultOptions;\n G.getOptions = Defaults.getOptions;\n G.time = Defaults.defaultTime;\n G.setOptions = Defaults.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n StackingAxis.compose(Axis, Chart, Series);\n // Default Export\n\n return G;\n });\n _modules['masters/highcharts.src.js']._modules = _modules;\n return _modules['masters/highcharts.src.js'];\n}));","/**\n * @license Highstock JS v10.3.3 (2023-01-20)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highstock', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (window) {\n 'use strict';\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n * @private\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.3.3', Globals.win = (typeof window !== 'undefined' ?\n window :\n {}), // eslint-disable-line node/no-unsupported-features/es-builtins\n Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n var supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n var severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = \"\" + severity + \": Deprecated member\";\n }\n var isCode = isNumber(code);\n var message = isCode ?\n \"\" + severity + \" #\" + code + \": www.highcharts.com/errors/\" + code + \"/\" :\n code.toString();\n var defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n var additionalMessages_1 = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages_1 += \"\\n - \".concat(key, \": \").concat(value);\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages_1;\n }\n fireEvent(H, 'displayError', { chart: chart, code: code, message: message, params: params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n var i,\n args = arguments,\n ret = {};\n var doCopy = function (copy,\n original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n var len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n var result = {};\n objectEach(newer, function (_val, key) {\n var ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key] ||\n // If the newer key is explicitly undefined, keep it (#10525)\n (key in newer && !(key in older))) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n var c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [keyOrAttribs]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, keyOrAttribs, value) {\n var isGetter = isString(keyOrAttribs) && !defined(value);\n var ret;\n var attrSingle = function (value,\n key) {\n // Set the value\n if (defined(value)) {\n elem.setAttribute(key,\n value);\n // Get the value\n }\n else if (isGetter) {\n ret = elem.getAttribute(key);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && key === 'class') {\n ret = elem.getAttribute(key + 'Name');\n }\n // Remove the value\n }\n else {\n elem.removeAttribute(key);\n }\n };\n // If keyOrAttribs is a string\n if (isString(keyOrAttribs)) {\n attrSingle(value, keyOrAttribs);\n // Else if keyOrAttribs is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(keyOrAttribs, attrSingle);\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number|undefined} id\n * Id of a timeout.\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick\n *\n * @param {...Array} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n var args = arguments;\n var length = args.length;\n for (var i = 0; i < length; i++) {\n var arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && defined(styles.opacity)) {\n styles.filter = \"alpha(opacity=\".concat(styles.opacity * 100, \")\");\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @function Highcharts.extendClass\n *\n * @param {Highcharts.Class} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class}\n * A new prototype.\n */\n function extendClass(parent, members) {\n var obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function () {\n var outerArgs = arguments,\n scope = this;\n return func.apply(this, [\n function () {\n return proceed.apply(scope, arguments.length ? arguments : outerArgs);\n }\n ].concat([].slice.call(arguments)));\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n var i,\n retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, getMagnitude(interval));\n var normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n var length = arr.length;\n var sortValue,\n i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n var i = data.length,\n min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n var i = data.length,\n max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n var timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n var pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n var pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n var child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n var customGetStyle = (H.getStyle || // oldie getStyle\n getStyle);\n var style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n var offsetWidth = Math.min(el.offsetWidth,\n el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n var boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (customGetStyle(el, 'padding-left', true) || 0) -\n (customGetStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (customGetStyle(el, 'padding-top', true) || 0) -\n (customGetStyle(el, 'padding-bottom', true) || 0)));\n }\n if (!win.getComputedStyle) {\n // SVG not supported, forgot to load oldie.js?\n error(27, true);\n }\n // Otherwise, get the computed style\n var css = win.getComputedStyle(el,\n void 0); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find\n *\n * @param {Array} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n var find = Array.prototype.find ?\n function (arr,\n callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n var i;\n var length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n var docElem = doc.documentElement,\n box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0,\n left: 0,\n width: 0,\n height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n var _a;\n error(32, false, void 0, (_a = {}, _a[\"Highcharts.\".concat(key)] = \"use Array.\".concat(val), _a));\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent\n *\n * @param {Highcharts.Class|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options) {\n /* eslint-enable valid-jsdoc */\n if (options === void 0) { options = {}; }\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n var owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n var events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n var addEventListener = (el.addEventListener || H.addEventListenerPolyfill);\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n var eventObject = {\n fn: fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort(function (a, b) { return a.order - b.order; });\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent\n *\n * @param {Highcharts.Class|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n var removeEventListener = (el.removeEventListener || H.removeEventListenerPolyfill);\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n var types,\n len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n var owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n var events = owner.hcEvents;\n if (type) {\n var typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n var e,\n i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event,\n // and setting it will cause en error in IE8 (#2465).\n type: type\n });\n }\n var events = [];\n var object = el;\n var multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort(function (a, b) { return a.order - b.order; });\n }\n // Call the collected event handlers\n events.forEach(function (obj) {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n var serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n var uniqueKey = (function () {\n var hash = Math.random().toString(36).substring(2, 9) + '-';\n var id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n var args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n var Utilities = {\n addEvent: addEvent,\n arrayMax: arrayMax,\n arrayMin: arrayMin,\n attr: attr,\n clamp: clamp,\n cleanRecursively: cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat: correctFloat,\n createElement: createElement,\n css: css,\n defined: defined,\n destroyObjectProperties: destroyObjectProperties,\n discardElement: discardElement,\n erase: erase,\n error: error,\n extend: extend,\n extendClass: extendClass,\n find: find,\n fireEvent: fireEvent,\n getMagnitude: getMagnitude,\n getNestedProperty: getNestedProperty,\n getStyle: getStyle,\n inArray: inArray,\n isArray: isArray,\n isClass: isClass,\n isDOMElement: isDOMElement,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n keys: keys,\n merge: merge,\n normalizeTickInterval: normalizeTickInterval,\n objectEach: objectEach,\n offset: offset,\n pad: pad,\n pick: pick,\n pInt: pInt,\n relativeLength: relativeLength,\n removeEvent: removeEvent,\n splat: splat,\n stableSort: stableSort,\n syncTimeout: syncTimeout,\n timeUnits: timeUnits,\n uniqueKey: uniqueKey,\n useSerialIds: useSerialIds,\n wrap: wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary\n */ /**\n * @name Highcharts.Dictionary#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n var ChartDefaults = {\n /**\n * Default `mapData` for all series,\n in terms of a GeoJSON or TopoJSON\n * object. If set to a string,\n it functions as an index into the\n * `Highcharts.maps` array.\n *\n * For picking out individual shapes and geometries to use for each series\n * of the map,\n see [series.mapData](#series.map.mapData).\n *\n * @sample maps/demo/geojson\n * Loading GeoJSON data\n * @sample maps/chart/topojson\n * Loading TopoJSON data\n *\n * @type {string|Array<*>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axes,\n the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks,\n as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy,\n it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n * then the `alignTicks ` will be disabled for the axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * When using multiple axes,\n align the thresholds. When this is true,\n other\n * ticks will also be aligned.\n *\n * Note that for line series and some other series types,\n the `threshold`\n * option is set to `null` by default. This will in turn cause their y-axis\n * to not have a threshold. In order to avoid that,\n set the series\n * `threshold` to 0 or another number.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n or\n * if the axis is logarithmic,\n the threshold will not be aligned.\n *\n * @sample {highcharts} highcharts/chart/alignthresholds/ Set to true\n *\n * @since 10.0.0\n * @product highcharts highstock gantt\n * @apioption chart.alignThresholds\n */\n alignThresholds: false,\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation,\n see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`,\n it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object,\n the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points,\n the chart redraw\n * will be done with animation,\n but in case of more data points,\n it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial}\n * @default undefined\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`,\n allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time,\n using the\n * `addSeries` method. One parameter,\n `event`,\n is passed to the\n * function,\n containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter,\n `event`,\n * is passed to the function,\n containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',\n e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2,\n it also waits\n * for images to be loaded,\n for example from point markers. One\n * parameter,\n `event`,\n is passed to the function,\n containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn,\n either after a call to\n * `chart.redraw()` or after an axis,\n series or point is modified with\n * the `redraw` option set to `true`. One parameter,\n `event`,\n is passed\n * to the function,\n containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event),\n and after each redraw (directly after the `redraw` event).\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter,\n `event`,\n is\n * passed to the function,\n containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @declare Highcharts.OptionsChartPanningTypeValue\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @product highcharts highstock gantt\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @deprecated\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-1`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * By default, (because of memory and performance reasons) the chart does\n * not copy the data but keeps it as a reference. In some cases, this might\n * result in mutating the original data source. In order to prevent that,\n * set that property to false. Please note that changing that might decrease\n * performance, especially with bigger sets of data.\n *\n * @type {boolean}\n * @since 10.1.0\n */\n allowMutatingData: true,\n /**\n * Alias of `type`.\n *\n * @sample {highcharts} highcharts/chart/defaultseriestype/\n * Bar\n *\n * @deprecated\n *\n * @product highcharts\n */\n defaultSeriesType: 'line',\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n *\n * @since 2.2\n * @deprecated 10.2.1\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n */\n theme: {\n /**\n * @internal\n */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @since 2.1\n * @apioption chart.reflow\n */\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div`. Note\n * that since the default font styles are applied in the renderer, it\n * is ignorant of the individual chart options and must be set globally.\n * Also note that changing the font size in the `chart.style` options only\n * applies to those elements that do not have a specific `fontSize` setting.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": \"\\\"Lucida Grande\\\", \\\"Lucida Sans Unicode\\\", Verdana, Arial, Helvetica, sans-serif\",\"fontSize\":\"12px\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highcharts} highcharts/chart/zoomtype-polar/\n * Zoom on polar chart\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n * @sample {highmaps} maps/chart/zoomtype-xy/\n * Map with selection zoom\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @deprecated\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n * @deprecated\n */\n zoomBySingleTouch: false,\n /**\n * Chart zooming options.\n * @since 10.2.1\n */\n zooming: {\n /**\n * Equivalent to [type](#chart.zooming.type), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `type` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.pinchType\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @declare Highcharts.OptionsChartZoomingTypeValue\n * @type {string}\n * @default {highcharts} undefined\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.type\n */\n /**\n * Set a key to hold when dragging to zoom the chart. This is useful to\n * avoid zooming while moving points. Should be set different than\n * [chart.panKey](#chart.panKey).\n *\n * @type {string}\n * @default {highcharts} undefined\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @requires modules/draggable-points\n * @apioption chart.zooming.key\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger\n * pinch will still work as set up by [chart.zooming.pinchType]\n * (#chart.zooming.pinchType). However, `singleTouch` will interfere\n * with touch-dragging the chart to read the tooltip. And especially\n * when vertical zooming is enabled, it will make it hard to scroll\n * vertically on the page.\n *\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n *\n * @product highcharts highstock gantt\n */\n singleTouch: false,\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.zooming.resetButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.2.1\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 10.2.1\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.zooming.resetButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n }\n },\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#335cad\" /* Palette.highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* Palette.neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isNumber = U.isNumber,\n merge = U.merge,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n var Color = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Color(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n var GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n // Backwards compatibility, allow instanciation without new (#13053)\n if (!(this instanceof Color)) {\n return new Color(input);\n }\n this.init(input);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n Color.parse = function (input) {\n return input ? new Color(input) : Color.None;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n Color.prototype.init = function (input) {\n var result,\n rgba,\n i,\n parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map(function (stop) { return new Color(stop[1]); });\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n var len = input.length,\n col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n };\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n Color.prototype.get = function (format) {\n var input = this.input,\n rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n var ret_1 = merge(input);\n ret_1.stops = [].slice.call(ret_1.stops);\n this.stops.forEach(function (stop, i) {\n ret_1.stops[i] = [\n ret_1.stops[i][0],\n stop.get(format)\n ];\n });\n return ret_1;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return \"\".concat(rgba[3]);\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n };\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n Color.prototype.brighten = function (alpha) {\n var rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (var i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n };\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n Color.prototype.setOpacity = function (alpha) {\n this.rgba[3] = alpha;\n return this;\n };\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n Color.prototype.tweenTo = function (to, pos) {\n var fromRgba = this.rgba,\n toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n var hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n return Color;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.scss.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n var SeriesPalettes = {\n /**\n * Colors for data series and points.\n */\n colors: [\n '#7cb5ec',\n '#434348',\n '#90ed7d',\n '#f7a35c',\n '#8085e9',\n '#f15c80',\n '#e4d354',\n '#2b908f',\n '#f45b5b',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var defined = U.defined,\n error = U.error,\n extend = U.extend,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n splat = U.splat,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n var hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} [options]\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n var Time = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Time(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n Time.prototype.get = function (unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n var realMs = date.getTime();\n var ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n var ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n };\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n Time.prototype.set = function (unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n var offset = this.getTimezoneOffset(date);\n var ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n var newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n };\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} [options]\n *\n */\n Time.prototype.update = function (options) {\n if (options === void 0) { options = {}; }\n var useUTC = pick(options.useUTC,\n true);\n this.options = options = merge(true, this.options, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset) || void 0;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n };\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n Time.prototype.makeTime = function (year, month, date, hours, minutes, seconds) {\n var d,\n offset,\n newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n };\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n Time.prototype.timezoneOffsetFunction = function () {\n var time = this,\n options = this.options,\n getTimezoneOffset = options.getTimezoneOffset,\n moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n };\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n Time.prototype.dateFormat = function (format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n var time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n };\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array|Highcharts.Dictionary} f\n * General format description\n * @return {Highcharts.Dictionary}\n * The object definition\n */\n Time.prototype.resolveDTLFormat = function (f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n };\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n Time.prototype.getTimeTicks = function (normalizedInterval, min, max, startOfWeek) {\n var time = this,\n Date = time.Date,\n tickPositions = [],\n higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min),\n interval = normalizedInterval.unitRange,\n count = normalizedInterval.count || 1;\n var i,\n minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength,\n minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n var minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n var t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks: higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n };\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n Time.prototype.getDateFormat = function (range, timestamp, startOfWeek, dateTimeLabelFormats) {\n var dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n var n = 'millisecond', \n // for sub-millisecond data, #4223\n lastN = n;\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w', timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n return this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n };\n return Time;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number|undefined}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/Defaults.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var isTouchDevice = H.isTouchDevice,\n svg = H.svg;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n * @private\n */\n var defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n *\n * ### Legacy\n *\n * In Highcharts 3.x, the default colors were:\n * ```js\n * colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce',\n * '#492970', '#f28f43', '#77a1e5', '#c42525', '#a6c96a']\n * ```\n *\n * In Highcharts 2.x, the default colors were:\n * ```js\n * colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE',\n * '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92']\n * ```\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n *\n * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}\n * @default [\"#7cb5ec\", \"#434348\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\",\n * \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"18px\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"16px\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * HTML labels that can be positioned anywhere in the chart area.\n *\n * This option is deprecated since v7.1.2. Instead, use\n * [annotations](#annotations) that support labels.\n *\n * @deprecated\n * @product highcharts highstock\n */\n labels: {\n /**\n * An HTML label that can be positioned anywhere in the chart area.\n *\n * @deprecated\n * @type {Array<*>}\n * @apioption labels.items\n */\n /**\n * Inner HTML or text for the label.\n *\n * @deprecated\n * @type {string}\n * @apioption labels.items.html\n */\n /**\n * CSS styles for each label. To position the label, use left and top\n * like this:\n * ```js\n * style: {\n * left: '100px',\n * top: '100px'\n * }\n * ```\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @apioption labels.items.style\n */\n /**\n * Shared CSS styles for all labels.\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"position\": \"absolute\"}\n */\n style: {\n /**\n * @ignore-option\n */\n position: 'absolute',\n /**\n * @ignore-option\n */\n color: \"#333333\" /* Palette.neutralColor80 */\n }\n },\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginBottom\n */\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginTop\n */\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the\n * [adapt chart to legend](https://github.com/highcharts/adapt-chart-to-legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#003399\" /* Palette.highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"12px\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '12px',\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * For a color axis with data classes, how many decimals to render in\n * the legend. The default preserves the decimals of the range numbers.\n *\n * @type {number}\n * @default -1\n * @product highcharts highmaps\n * @apioption legend.valueDecimals\n */\n /**\n * For a color axis with data classes, a suffix for the range numbers in\n * the legend.\n *\n * @type {string}\n * @default ''\n * @product highcharts highmaps\n * @apioption legend.valueSuffix\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a custom position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * To find the actual hovered `Point` instance, use\n * `this.chart.hoverPoint`. For shared or split tooltips, all the hover\n * points are available in `this.chart.hoverPoints`.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info: `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 5px by default\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %b %e, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %b %e, %H:%M:%S',\n /** @internal */\n minute: '%A, %b %e, %H:%M',\n /** @internal */\n hour: '%A, %b %e, %H:%M',\n /** @internal */\n day: '%A, %b %e, %Y',\n /** @internal */\n week: 'Week from %A, %b %e, %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '{point.key}
',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highcharts|highstock} highcharts/tooltip/pointformat-extra-information/\n * Show extra information about points in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '\\u25CF {series.name}: {point.y}
',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: color(\"#f7f7f7\" /* Palette.neutralColor3 */)\n // @todo: Disallow undefined as input for colors\n .setOpacity(0.85).get(),\n /**\n * The pixel width of the tooltip border.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2px by default\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: 1,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '12px',\n /** @internal */\n whiteSpace: 'nowrap'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 {geojson.copyrightShort}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* Palette.neutralColor40 */,\n /** @internal */\n fontSize: '9px'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n var defaultTime = new Time(merge(defaultOptions.global,\n defaultOptions.time));\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n var DefaultOptions = {\n defaultOptions: defaultOptions,\n defaultTime: defaultTime,\n getOptions: getOptions,\n setOptions: setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.SelectEventObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var win = H.win;\n var isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n var Fx = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Fx(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n Fx.prototype.dSetter = function () {\n var paths = this.paths,\n start = paths && paths[0],\n end = paths && paths[1],\n now = this.now || 0;\n var path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (var i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n var startSeg = start[i];\n var endSeg = end[i];\n var tweenSeg = [];\n for (var j = 0; j < endSeg.length; j++) {\n var startItem = startSeg[j];\n var endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n };\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n Fx.prototype.update = function () {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n };\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n Fx.prototype.run = function (from, to, unit) {\n var self = this,\n options = self.options,\n timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (var i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n };\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n Fx.prototype.step = function (gotoEnd) {\n var t = +new Date(),\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n var ret,\n done;\n if ((elem.attr) && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n };\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n Fx.prototype.initPath = function (elem, fromD, toD) {\n var startX = elem.startX,\n endX = elem.endX,\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1;\n var shift,\n fullLength,\n i,\n reverse,\n start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end,\n end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n var moveSegment = arr[0],\n otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n var z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n var segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n var lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n Fx.prototype.fillSetter = function () {\n Fx.prototype.strokeSetter.apply(this, arguments);\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n Fx.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n return Fx;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n var labelAnimation = animObject(animation),\n s = series ? [series] : chart.series;\n var defer = 0,\n duration = 0;\n s.forEach(function (series) {\n var seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n var anim = {\n defer: Math.max(0,\n defer - duration),\n duration: Math.min(defer,\n duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n var i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n var animationExports = {\n animate: animate,\n animObject: animObject,\n getDeferredAnimation: getDeferredAnimation,\n setAnimation: setAnimation,\n stop: stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n error = U.error,\n isFunction = U.isFunction,\n isString = U.isString,\n objectEach = U.objectEach,\n splat = U.splat;\n var trustedTypes = win.trustedTypes;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n var trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: function (s) { return s; }\n }));\n var emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // In IE8, DOMParser is undefined. IE9 and PhantomJS are only able to parse XML.\n var hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n var AST = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n function AST(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n AST.filterUserAttributes = function (attributes) {\n objectEach(attributes, function (val, key) {\n var valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some(function (ref) { return val.indexOf(ref) === 0; });\n }\n if (!valid) {\n error(33, false, void 0, {\n 'Invalid attribute in config': \"\".concat(key)\n });\n delete attributes[key];\n }\n // #17753, < is not allowed in SVG attributes\n if (isString(val) && attributes[key]) {\n attributes[key] = val.replace(/} The parsed nodes.\n */\n AST.prototype.parseMarkup = function (markup) {\n var nodes = [];\n markup = markup\n .trim()\n // The style attribute throws a warning when parsing when CSP is\n // enabled (#6884), so use an alias and pick it up below\n // Make all quotation marks parse correctly to DOM (#17627)\n .replace(/ style=([\"'])/g, ' data-style=$1');\n var doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n var body = createElement('div');\n body.innerHTML = markup;\n doc = { body: body };\n }\n var appendChildNodes = function (node,\n addTo) {\n var tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n var astNode = {\n tagName: tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n var parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n var attributes_2 = {};\n [].forEach.call(parsedAttributes, function (attrib) {\n if (attrib.name === 'data-style') {\n astNode.style = AST.parseStyle(attrib.value);\n }\n else {\n attributes_2[attrib.name] = attrib.value;\n }\n });\n astNode.attributes = attributes_2;\n }\n // Handle children\n if (node.childNodes.length) {\n var children_1 = [];\n [].forEach.call(node.childNodes, function (childNode) {\n appendChildNodes(childNode, children_1);\n });\n if (children_1.length) {\n astNode.children = children_1;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, function (childNode) { return appendChildNodes(childNode, nodes); });\n return nodes;\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedAttributes)\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @type {Array}\n */\n AST.allowedAttributes = [\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'text-anchor',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'xlink:href',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedReferences)\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @type {Array}\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedTags)\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @type {Array}\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'textPath',\n 'thead',\n 'title',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n /**\n * Allow all custom SVG and HTML attributes, references and tags (together\n * with potentially harmful ones) to be added to the DOM from the chart\n * configuration. In other words, disable the the allow-listing which is the\n * primary functionality of the AST.\n *\n * WARNING: Setting this property to `true` while allowing untrusted user\n * data in the chart configuration will expose your application to XSS\n * security risks!\n *\n * Note that in case you want to allow a known set of tags or attributes,\n * you should allow-list them instead of disabling the filtering totally.\n * See [allowedAttributes](Highcharts.AST#.allowedAttributes),\n * [allowedReferences](Highcharts.AST#.allowedReferences) and\n * [allowedTags](Highcharts.AST#.allowedTags). The `bypassHTMLFiltering`\n * setting is intended only for those cases where allow-listing is not\n * practical, and the chart configuration already comes from a secure\n * source.\n *\n * @example\n * // Allow all custom attributes, references and tags (disable DOM XSS\n * // filtering)\n * Highcharts.AST.bypassHTMLFiltering = true;\n *\n * @name Highcharts.AST.bypassHTMLFiltering\n * @static\n */\n AST.bypassHTMLFiltering = false;\n return AST;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var getNestedProperty = U.getNestedProperty,\n isNumber = U.isNumber,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n val,\n index;\n var floatRegex = /f$/;\n var decRegex = /\\.([0-9])/;\n var lang = defaultOptions.lang;\n var time = chart && chart.time || defaultTime;\n var numberFormatter = chart && chart.numberFormatter || numberFormat;\n var ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n var decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n var ret,\n fractionDigits;\n var lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n var roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals,\n origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n var strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n var thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var FormatUtilities = {\n dateFormat: dateFormat,\n format: format,\n numberFormat: numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n var clamp = U.clamp,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n var origBoxes = boxes,\n reducedLen = origBoxes.reducedLen || len,\n sortByRank = function (a,\n b) {\n return (b.rank || 0) - (a.rank || 0);\n }, sortByTarget = function (a, b) {\n return a.target - b.target;\n };\n var i,\n overlapping = true,\n restBoxes = [], // The outranked overshoot\n box,\n target,\n total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map(function (box) { return ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }); });\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some(function (box) {\n var posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(function () {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach(function (box) { return delete box.pos; });\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n stop = A.stop;\n var deg2rad = H.deg2rad,\n doc = H.doc,\n noop = H.noop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n removeEvent = U.removeEvent,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n var SVGElement = /** @class */ (function () {\n function SVGElement() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n this.symbolCustomAttribs = [\n 'x',\n 'y',\n 'width',\n 'height',\n 'r',\n 'start',\n 'end',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'rounded'\n ];\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n SVGElement.prototype._defaultGetter = function (key) {\n var ret = pick(this[key + 'Value'], // align getter\n this[key],\n this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype._defaultSetter = function (value, key, element) {\n element.setAttribute(key, value);\n };\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.add = function (parent) {\n var renderer = this.renderer,\n element = this.element;\n var inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n };\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n SVGElement.prototype.addClass = function (className, replace) {\n var currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n };\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n SVGElement.prototype.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n };\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.align = function (alignOptions, alignByTranslate, box) {\n var attribs = {},\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects;\n var x,\n y,\n alignTo,\n alignFactor,\n vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n var align = alignOptions.align,\n vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n SVGElement.prototype.alignSetter = function (value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n };\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.animate = function (params, options, complete) {\n var _this = this;\n var animOptions = animObject(pick(options,\n this.renderer.globalAnimation,\n true)),\n deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (pick(doc.hidden, doc.msHidden, doc.webkitHidden, false)) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(function () {\n if (_this.element) {\n animate(_this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete || animOptions.complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n };\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n SVGElement.prototype.applyTextOutline = function (textOutline) {\n var elem = this.element,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n var parts = textOutline.split(' ');\n var color = parts[parts.length - 1];\n var strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n var outline_1 = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline_1, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n var parentElem = elem.querySelector('textPath') || elem;\n [].forEach.call(parentElem.childNodes, function (childNode) {\n var clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone\n .removeAttribute(prop); });\n }\n outline_1.appendChild(clone);\n });\n // Collect the sum of dy from all children, included nested ones\n var totalHeight_1 = 0;\n [].forEach.call(parentElem.querySelectorAll('text tspan'), function (element) {\n totalHeight_1 += Number(element.getAttribute('dy'));\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B';\n // Reset the position for the following text\n attr(br, {\n x: Number(elem.getAttribute('x')),\n dy: -totalHeight_1\n });\n // Insert the outline\n outline_1.appendChild(br);\n parentElem.insertBefore(outline_1, parentElem.firstChild);\n }\n };\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n SVGElement.prototype.attr = function (hash, val, complete, continueAnimation) {\n var element = this.element,\n symbolCustomAttribs = this.symbolCustomAttribs;\n var key,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n // Let the shadow follow the main element\n if (!this.styledMode &&\n this.shadows &&\n /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/\n .test(key)) {\n this.updateShadows(key, val, setter);\n }\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n };\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n SVGElement.prototype.clip = function (clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n };\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n SVGElement.prototype.crisp = function (rect, strokeWidth) {\n var wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n var normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n };\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n SVGElement.prototype.complexColor = function (colorOptions, prop, elem) {\n var renderer = this.renderer;\n var colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n var gradientObject_1 = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject_1.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject_1.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n var stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject_1);\n // Add the stop element to the gradient\n gradientObject_1.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n };\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n SVGElement.prototype.css = function (styles) {\n var oldStyles = this.styles,\n newStyles = {},\n elem = this.element;\n var textWidth,\n hasNew = !oldStyles;\n // convert legacy\n if (styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (value, n) {\n if (oldStyles && oldStyles[n] !== value) {\n newStyles[n] = value;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n var stylesToApply_1 = merge(styles);\n if (elem.namespaceURI === this.SVG_NS) {\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be\n // added to the DOM. In styled mode, no CSS should find its way\n // to the DOM whatsoever (#6173, #6474).\n ['textOutline', 'textOverflow', 'width'].forEach(function (key) { return (stylesToApply_1 &&\n delete stylesToApply_1[key]); });\n }\n css(elem, stylesToApply_1);\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n SVGElement.prototype.dashstyleSetter = function (value) {\n var i,\n strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n var v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n };\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n SVGElement.prototype.destroy = function () {\n var wrapper = this,\n element = wrapper.element || {},\n renderer = wrapper.renderer,\n ownerSVGElement = element.ownerSVGElement;\n var parentToClean = (renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0),\n grandParent,\n i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n var clipPath_1 = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath_1.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath_1.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n if (!renderer.styledMode) {\n wrapper.destroyShadows();\n }\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n };\n /**\n * Destroy shadows on the element.\n *\n * @private\n * @function Highcharts.SVGElement#destroyShadows\n *\n */\n SVGElement.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = void 0;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.dSetter = function (value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce(function (acc, seg, i) {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n };\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n SVGElement.prototype.fadeOut = function (duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.hide();\n }\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.fillSetter = function (value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n };\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n SVGElement.prototype.getBBox = function (reload, rot) {\n var wrapper = this,\n alignValue = wrapper.alignValue,\n element = wrapper.element,\n renderer = wrapper.renderer,\n styles = wrapper.styles,\n textStr = wrapper.textStr,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n isSVG = element.namespaceURI === wrapper.SVG_NS,\n rotation = pick(rot,\n wrapper.rotation, 0),\n fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n var bBox,\n width,\n height,\n toggleTextShadowShim,\n cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation,\n fontSize,\n wrapper.textWidth,\n alignValue,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n var outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display: display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // HTML elements with `exporting.allowHTML` and\n // legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight,\n x: 0,\n y: 0\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { x: 0, y: 0, width: 0, height: 0 };\n }\n // VML Renderer or useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[\"\" + (fontSize || '') + \",\".concat(Math.round(height))] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n var baseline = Number(element.getAttribute('y') || 0) - bBox.y,\n alignFactor = {\n 'right': 1,\n 'center': 0.5\n }[alignValue || 0] || 0,\n rad = rotation * deg2rad,\n rad90 = (rotation - 90) * deg2rad,\n wCosRad = width * Math.cos(rad),\n wSinRad = width * Math.sin(rad),\n cosRad90 = Math.cos(rad90),\n sinRad90 = Math.sin(rad90), \n // Find the starting point on the left side baseline of\n // the text\n pX = bBox.x + alignFactor * (width - wCosRad),\n pY = bBox.y + baseline - alignFactor * wSinRad, \n // Find all corners\n aX = pX + baseline * cosRad90,\n bX = aX + wCosRad,\n cX = bX - height * cosRad90,\n dX = cX - wCosRad,\n aY = pY + baseline * sinRad90,\n bY = aY + wSinRad,\n cY = bY - height * sinRad90,\n dY = cY - wSinRad;\n // Deduct the bounding box from the corners\n bBox.x = Math.min(aX, bX, cX, dX);\n bBox.y = Math.min(aY, bY, cY, dY);\n bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;\n bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n };\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n SVGElement.prototype.getStyle = function (prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n };\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n SVGElement.prototype.hasClass = function (className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n };\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.hide = function () {\n return this.attr({ visibility: 'hidden' });\n };\n /**\n * @private\n */\n SVGElement.prototype.htmlGetBBox = function () {\n return { height: 0, width: 0, x: 0, y: 0 };\n };\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n SVGElement.prototype.init = function (renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n };\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n SVGElement.prototype.on = function (eventType, handler) {\n var onEvents = this.onEvents;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.opacitySetter = function (value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n var opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n };\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n SVGElement.prototype.removeClass = function (className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(\"(^| )\".concat(className, \"( |$)\")) : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n };\n /**\n *\n * @private\n */\n SVGElement.prototype.removeTextOutline = function () {\n var outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n };\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n SVGElement.prototype.safeRemoveChild = function (element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n };\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setRadialReference = function (coordinates) {\n var existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n };\n /**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setTextPath = function (path, textPathOptions) {\n var _this = this;\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n var url = this.renderer.url,\n textWrapper = this.text || this,\n textPath = textWrapper.textPath,\n attributes = textPathOptions.attributes,\n enabled = textPathOptions.enabled;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n var undo = addEvent(textWrapper, 'afterModifyTree',\n function (e) {\n if (path && enabled) {\n // Set ID for the path\n var textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the \n var textAttribs = {\n // dx/dy options must by set on (parent), the\n // rest should be set on \n x: 0,\n y: 0\n };\n if (defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n _this.attr({ transform: '' });\n if (_this.box) {\n _this.box = _this.box.destroy();\n }\n // Wrap the nodes in a textPath\n var children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: \"\" + url + \"#\".concat(textPathId)\n }),\n children: children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path: path, undo: undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n };\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions]\n * The shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @param {Highcharts.SVGElement} [group]\n * The SVG group element where the shadows will be applied. The\n * default is to add it to the same parent as the current element.\n * Internally, this is ised for pie slices, where all the shadows are\n * added to an element behind all the slices.\n *\n * @param {boolean} [cutOff]\n * Used internally for column shadows.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.shadow = function (shadowOptions, group, cutOff) {\n var shadows = [],\n _a = this,\n element = _a.element,\n oldShadowOptions = _a.oldShadowOptions,\n parentGroup = _a.parentGroup,\n parentInverted = parentGroup && parentGroup.rotation === 90,\n defaultShadowOptions = {\n color: \"#000000\" /* Palette.neutralColor100 */,\n offsetX: parentInverted ? -1 : 1,\n offsetY: parentInverted ? -1 : 1,\n opacity: 0.15,\n width: 3\n };\n var i,\n shadow,\n strokeWidth,\n shadowElementOpacity,\n update = false, \n // compensate for inverted plot area\n transform,\n options;\n if (shadowOptions === true) {\n options = defaultShadowOptions;\n }\n else if (typeof shadowOptions === 'object') {\n options = extend(defaultShadowOptions, shadowOptions);\n }\n // Update shadow when options change (#12091).\n if (options) {\n // Go over each key to look for change\n if (options && oldShadowOptions) {\n objectEach(options, function (value, key) {\n if (value !== oldShadowOptions[key]) {\n update = true;\n }\n });\n }\n if (update) {\n this.destroyShadows();\n }\n this.oldShadowOptions = options;\n }\n if (!options) {\n this.destroyShadows();\n }\n else if (!this.shadows) {\n shadowElementOpacity = options.opacity / options.width;\n transform = parentInverted ?\n \"translate(\".concat(options.offsetY, \", \").concat(options.offsetX, \")\") :\n \"translate(\".concat(options.offsetX, \", \").concat(options.offsetY, \")\");\n for (i = 1; i <= options.width; i++) {\n shadow = element.cloneNode(false);\n strokeWidth = (options.width * 2) + 1 - (2 * i);\n attr(shadow, {\n stroke: (shadowOptions.color ||\n \"#000000\" /* Palette.neutralColor100 */),\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n transform: transform,\n fill: 'none'\n });\n shadow.setAttribute('class', (shadow.getAttribute('class') || '') + ' highcharts-shadow');\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n if (group) {\n group.element.appendChild(shadow);\n }\n else if (element.parentNode) {\n element.parentNode.insertBefore(shadow, element);\n }\n shadows.push(shadow);\n }\n this.shadows = shadows;\n }\n return this;\n };\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=true]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.show = function (inherit) {\n if (inherit === void 0) { inherit = true; }\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n };\n /**\n * Set the stroke-width and record it on the SVGElement\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype['stroke-widthSetter'] = function (value, key, element) {\n // Record it for quick access in getter\n this[key] = value;\n element.setAttribute(key, value);\n };\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n SVGElement.prototype.strokeWidth = function () {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n var val = this.getStyle('stroke-width');\n var ret = 0,\n dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n };\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n SVGElement.prototype.symbolAttr = function (hash) {\n var wrapper = this;\n [\n 'x',\n 'y',\n 'r',\n 'start',\n 'end',\n 'width',\n 'height',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'clockwise'\n ].forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n SVGElement.prototype.textSetter = function (value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n SVGElement.prototype.titleSetter = function (value) {\n var el = this.element;\n var titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n };\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.toFront = function () {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n };\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n SVGElement.prototype.translate = function (x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n };\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @function Highcharts.SVGElement#updateShadows\n *\n * @param {string} key\n * The attribute name.\n *\n * @param {number} value\n * The value of the attribute.\n *\n * @param {Function} setter\n * The setter function, inherited from the parent wrapper.\n */\n SVGElement.prototype.updateShadows = function (key, value, setter) {\n var shadows = this.shadows;\n if (shadows) {\n var i = shadows.length;\n while (i--) {\n setter.call(shadows[i], key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value, key, shadows[i]);\n }\n }\n };\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n SVGElement.prototype.updateTransform = function () {\n var _a = this,\n element = _a.element,\n matrix = _a.matrix,\n _b = _a.rotation,\n rotation = _b === void 0 ? 0 : _b,\n scaleX = _a.scaleX,\n scaleY = _a.scaleY,\n _c = _a.translateX,\n translateX = _c === void 0 ? 0 : _c,\n _d = _a.translateY,\n translateY = _d === void 0 ? 0 : _d;\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n var transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // Apply rotation\n if (rotation) { // text rotation or inverted chart\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length && !(this.text || this).textPath) {\n element.setAttribute('transform', transform.join(' '));\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype.visibilitySetter = function (value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n SVGElement.prototype.xGetter = function (key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n };\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n SVGElement.prototype.zIndexSetter = function (value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n element = this.element,\n svgParent = parentNode === renderer.box;\n var childNodes,\n otherElement,\n otherZIndex,\n inserted = false,\n undefinedOtherZIndex,\n run = this.added,\n i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // , then we don't want to put items before \n // or \n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1] || null // null for oldIE export\n );\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0] || null // null for oldIE\n );\n inserted = true;\n }\n }\n return inserted;\n };\n return SVGElement;\n }());\n // Some shared setters and getters\n SVGElement.prototype.strokeSetter = SVGElement.prototype.fillSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dx\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dy\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n var defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType) {\n if (rendererType === void 0) { rendererType = defaultRenderer; }\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n var SVGLabel = /** @class */ (function (_super) {\n __extends(SVGLabel, _super);\n /* *\n *\n * Constructor\n *\n * */\n function SVGLabel(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n var _this = _super.call(this) || this;\n _this.paddingLeftSetter = _this.paddingSetter;\n _this.paddingRightSetter = _this.paddingSetter;\n _this.init(renderer, 'g');\n _this.textStr = str;\n _this.x = x;\n _this.y = y;\n _this.anchorX = anchorX;\n _this.anchorY = anchorY;\n _this.baseline = baseline;\n _this.className = className;\n _this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n _this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n _this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n var hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || _this.renderer.symbols[shape]) {\n _this.symbolKey = shape;\n }\n }\n _this.bBox = SVGLabel.emptyBBox;\n _this.padding = 3;\n _this.baselineOffset = 0;\n _this.needsBox = renderer.styledMode || hasBGImage;\n _this.deferredAttr = {};\n _this.alignFactor = 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n SVGLabel.prototype.alignSetter = function (value) {\n var alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n };\n SVGLabel.prototype.anchorXSetter = function (value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n };\n SVGLabel.prototype.anchorYSetter = function (value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n };\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n SVGLabel.prototype.boxAttr = function (key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n };\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n SVGLabel.prototype.css = function (styles) {\n if (styles) {\n var textStyles_1 = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach(function (prop) {\n if (typeof styles[prop] !== 'undefined') {\n textStyles_1[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles_1);\n // Update existing text, box (#9400, #12163, #18212)\n if ('fontSize' in textStyles_1 || 'fontWeight' in textStyles_1) {\n this.updateTextPadding();\n }\n else if ('width' in textStyles_1 || 'textOverflow' in textStyles_1) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n };\n /*\n * Destroy and release memory.\n */\n SVGLabel.prototype.destroy = function () {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n };\n SVGLabel.prototype.fillSetter = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n };\n /*\n * Return the bounding box of the box, not the group.\n */\n SVGLabel.prototype.getBBox = function () {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n };\n SVGLabel.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n };\n SVGLabel.prototype.heightSetter = function (value) {\n this.heightSetting = value;\n };\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n SVGLabel.prototype.onAdd = function () {\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: pick(this.textStr, ''),\n x: this.x || 0,\n y: this.y || 0\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n };\n SVGLabel.prototype.paddingSetter = function (value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n };\n SVGLabel.prototype.rSetter = function (value, key) {\n this.boxAttr(key, value);\n };\n SVGLabel.prototype.shadow = function (b) {\n if (b && !this.renderer.styledMode) {\n this.updateBoxSize();\n if (this.box) {\n this.box.shadow(b);\n }\n }\n return this;\n };\n SVGLabel.prototype.strokeSetter = function (value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['stroke-widthSetter'] = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['text-alignSetter'] = function (value) {\n this.textAlign = value;\n };\n SVGLabel.prototype.textSetter = function (text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text: text });\n }\n this.updateTextPadding();\n };\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n SVGLabel.prototype.updateBoxSize = function () {\n var text = this.text,\n style = text.element.style,\n attribs = {},\n padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(text.textStr)) ?\n text.getBBox() :\n SVGLabel.emptyBBox);\n var crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n var metrics = this.renderer.fontMetrics(style && style.fontSize,\n text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox && !text.textPath) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n var box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n };\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n SVGLabel.prototype.updateTextPadding = function () {\n var text = this.text;\n if (!text.textPath) {\n this.updateBoxSize();\n // Determine y based on the baseline\n var textY = this.baseline ? 0 : this.baselineOffset;\n var textX = pick(this.paddingLeft,\n this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n }\n };\n SVGLabel.prototype.widthSetter = function (value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n };\n SVGLabel.prototype.getPaddedWidth = function () {\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n var paddingRight = pick(this.paddingRight,\n padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n };\n SVGLabel.prototype.xSetter = function (value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n };\n SVGLabel.prototype.ySetter = function (value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n };\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'width'\n ];\n return SVGLabel;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(x, y, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = pick(options.r,\n w),\n ry = pick(options.r,\n h || w),\n proximity = 0.001,\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity,\n innerRadius = options.innerR,\n open_1 = pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n arc.push([\n 'M',\n x + rx * cosStart,\n y + ry * sinStart\n ], [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n x + rx * cosEnd,\n y + ry * sinEnd\n ]);\n if (defined(innerRadius)) {\n arc.push(open_1 ?\n [\n 'M',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ] : [\n 'L',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ], [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n x + innerRadius * cosStart,\n y + innerRadius * sinStart\n ]);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips, also used for rounded\n * rectangles in VML\n */\n function callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n var r = (options && options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['C', x + w, y, x + w, y, x + w, y + r],\n ['L', x + w, y + h - r],\n ['C', x + w, y + h, x + w, y + h, x + w - r, y + h],\n ['L', x + r, y + h],\n ['C', x, y + h, x, y + h, x, y + h - r],\n ['L', x, y + r],\n ['C', x, y, x, y, x + r, y] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n var Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var doc = H.doc,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isString = U.isString,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n var TextBuilder = /** @class */ (function () {\n function TextBuilder(svgElement) {\n var textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n this.fontSize = textStyles && textStyles.fontSize;\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n TextBuilder.prototype.buildSVG = function () {\n var wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = this.width && !wrapper.added && renderer.box, regexMatchBreaks = //g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n this.fontSize,\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (var i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n !wrapper.textPath &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n var ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(textNode);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n };\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n TextBuilder.prototype.modifyDOM = function () {\n var _this = this;\n var wrapper = this.svgElement;\n var x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n var firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), function (br, i) {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(void 0, br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: _this.getLineHeight(br.nextSibling),\n x: x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n var width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n var modifyTextNode = function (textNode,\n parentElement) {\n var text = textNode.textContent || '';\n var words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n var hasWhiteSpace = !_this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n var dy = _this.getLineHeight(parentElement);\n var lineNo = 0;\n var startAt = wrapper.actualWidth;\n if (_this.ellipsis) {\n if (text) {\n _this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - parseInt(_this.fontSize || 12, 10)), \n // Build the text to test for\n function (text, currentIndex) {\n return text.substring(0, currentIndex) + '\\u2026';\n });\n }\n }\n else if (hasWhiteSpace) {\n var lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n var precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !_this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n _this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n function (t, currentIndex) {\n return words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-');\n });\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach(function (childNode) {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach(function (line) {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy: dy, x: x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n var modifyChildren = (function (node) {\n var childNodes = [].slice.call(node.childNodes);\n childNodes.forEach(function (childNode) {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n };\n /**\n * Get the rendered line height of a , or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n TextBuilder.prototype.getLineHeight = function (node) {\n var fontSizeStyle;\n // If the node is a text node, use its parent\n var element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n if (!this.renderer.styledMode) {\n fontSizeStyle =\n element && /(px|em)$/.test(element.style.fontSize) ?\n element.style.fontSize :\n (this.fontSize || this.renderer.style.fontSize || 12);\n }\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(fontSizeStyle, element || this.svgElement.element).h;\n };\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n TextBuilder.prototype.modifyTree = function (nodes) {\n var _this = this;\n var modifyChild = function (node,\n i) {\n var _a = node.attributes,\n attributes = _a === void 0 ? {} : _a,\n children = node.children,\n _b = node.style,\n style = _b === void 0 ? {} : _b,\n tagName = node.tagName,\n styledMode = _this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-strong';\n }\n else {\n style.fontWeight = 'bold';\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-emphasized';\n }\n else {\n style.fontStyle = 'italic';\n }\n }\n // Modify styling\n if (style && style.color) {\n style.fill = style.color;\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n var nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some(function (child) { return child.tagName === '#text'; })) {\n node.children = [{ children: children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n extend(node, { attributes: attributes, style: style });\n // Recurse\n if (children) {\n children\n .filter(function (c) { return c.tagName !== '#text'; })\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n fireEvent(this.svgElement, 'afterModifyTree', { nodes: nodes });\n };\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n TextBuilder.prototype.truncate = function (textNode, text, words, startAt, width, getString) {\n var svgElement = this.svgElement;\n var renderer = svgElement.renderer,\n rotation = svgElement.rotation;\n // Cache the lengths to avoid checking the same twice\n var lengths = [];\n // Word wrap cannot be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n var minIndex = words ? 1 : 0;\n var maxIndex = (text || words || '').length;\n var currentIndex = maxIndex;\n var str;\n var actualWidth;\n var getSubStringLength = function (charEnd,\n concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n var end = concatenatedEnd || charEnd;\n var parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n // Legacy\n }\n else if (renderer.getSpanWidth) { // #9058 jsdom\n textNode.textContent = getString(text || words, charEnd);\n lengths[end] = startAt +\n renderer.getSpanWidth(svgElement, textNode);\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n };\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array} [except] Exceptions\n *\n * @return {string} The processed string\n */\n TextBuilder.prototype.unescapeEntities = function (inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n };\n return TextBuilder;\n }());\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n deg2rad = H.deg2rad,\n doc = H.doc,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n noop = H.noop,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Variables\n *\n * */\n var hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers. Through the VMLRenderer, part of the `oldie.js`\n * module, it also brings vector graphics to IE <= 8.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n var SVGRenderer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function SVGRenderer(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.isSVG = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n SVGRenderer.prototype.init = function (container, width, height, style, forExport, allowHTML, styledMode) {\n var renderer = this,\n boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }),\n element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n // object properties\n renderer.isSVG = true;\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n var desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.3.3'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n var subPixelFix,\n rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n };\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n SVGRenderer.prototype.definition = function (def) {\n var ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n };\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n SVGRenderer.prototype.getReferenceURL = function () {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n var id = uniqueKey();\n var ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id: id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': \"url(#\".concat(id, \")\"),\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n var svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n var hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n };\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n SVGRenderer.prototype.getStyle = function (style) {\n this.style = extend({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", ' +\n 'Arial, Helvetica, sans-serif',\n fontSize: '12px'\n }, style);\n return this.style;\n };\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n SVGRenderer.prototype.setStyle = function (style) {\n this.boxWrapper.css(this.getStyle(style));\n };\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n SVGRenderer.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n SVGRenderer.prototype.destroy = function () {\n var renderer = this,\n rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n // Defs are null in VMLRenderer\n // Otherwise, destroy them here.\n if (rendererDefs) {\n renderer.defs = rendererDefs.destroy();\n }\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n };\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n SVGRenderer.prototype.createElement = function (nodeName) {\n var wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n };\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n SVGRenderer.prototype.getRadialAttr = function (radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n };\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n SVGRenderer.prototype.buildText = function (wrapper) {\n new TextBuilder(wrapper).buildSVG();\n };\n /**\n * Returns white for dark colors and black for bright colors, based on W3C's\n * definition of [Relative luminance](\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance).\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} color\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n SVGRenderer.prototype.getContrast = function (color) {\n // #6216, #17273\n var rgba = Color.parse(color).rgba\n .map(function (b8) {\n var c = b8 / 255;\n return c <= 0.03928 ?\n c / 12.92 :\n Math.pow((c + 0.055) / 1.055, 2.4);\n });\n // Relative luminance\n var l = 0.2126 * rgba[0] + 0.7152 * rgba[1] + 0.0722 * rgba[2];\n // Use white or black based on which provides more contrast\n return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';\n };\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [selectState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n SVGRenderer.prototype.button = function (text, x, y, callback, theme, hoverState, selectState, disabledState, shape, useHTML) {\n if (theme === void 0) { theme = {}; }\n var label = this.label(text,\n x,\n y,\n shape,\n void 0,\n void 0,\n useHTML,\n void 0, 'button'),\n styledMode = this.styledMode,\n states = theme.states || {};\n var curState = 0;\n theme = merge(theme);\n delete theme.states;\n var normalStyle = merge({\n color: \"#333333\" /* Palette.neutralColor80 */,\n cursor: 'pointer',\n fontWeight: 'normal'\n },\n theme.style);\n delete theme.style;\n // Remove stylable attributes. Pass in the ButtonThemeObject and get the\n // SVGAttributes subset back.\n var normalState = AST.filterUserAttributes(theme);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational. The string type is a mistake, it is just for\n // compliance with SVGAttribute and is not used in button theme.\n var hoverStyle,\n selectStyle,\n disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* Palette.neutralColor3 */,\n stroke: \"#cccccc\" /* Palette.neutralColor20 */,\n 'stroke-width': 1\n }, normalState);\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* Palette.neutralColor10 */\n }, AST.filterUserAttributes(hoverState || states.hover || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n selectState = merge(normalState, {\n fill: \"#e6ebf5\" /* Palette.highlightColor10 */,\n style: {\n color: \"#000000\" /* Palette.neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(selectState || states.select || {}));\n selectStyle = selectState.style;\n delete selectState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || states.disabled || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to function\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n selectState,\n disabledState\n ][state || 0]);\n var css_1 = [\n normalStyle,\n hoverStyle,\n selectStyle,\n disabledStyle\n ][state || 0];\n if (isObject(css_1)) {\n label.css(css_1);\n }\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n // HTML labels don't need to handle pointer events because click and\n // mouseenter/mouseleave is bound to the underlying element.\n // Should this be reconsidered, we need more complex logic to share\n // events between the and its
counterpart, and avoid\n // triggering mouseenter/mouseleave when hovering from one to the\n // other (#17440).\n if (useHTML) {\n label.text.css({ pointerEvents: 'none' });\n }\n }\n return label\n .on('touchstart', function (e) { return e.stopPropagation(); })\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n };\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n SVGRenderer.prototype.crispLine = function (points, width, roundingFunction) {\n if (roundingFunction === void 0) { roundingFunction = 'round'; }\n var start = points[0];\n var end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n };\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.path = function (path) {\n var attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n };\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.circle = function (x, y, r) {\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n };\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.arc = function (x, y, r, innerR, start, end) {\n var options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR: innerR, start: start, end: end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n var arc = this.symbol('arc',\n x,\n y,\n r,\n r,\n options);\n arc.r = r; // #959\n return arc;\n };\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.rect = function (x, y, width, height, r, strokeWidth) {\n r = isObject(x) ? x.r : r;\n var wrapper = this.createElement('rect');\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x: x,\n y: y,\n width: Math.max(width, 0),\n height: Math.max(height, 0)\n });\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n attribs = wrapper.crisp(attribs);\n }\n attribs.fill = 'none';\n }\n if (r) {\n attribs.r = r;\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n };\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial} [animate=true]\n * Whether and how to animate.\n */\n SVGRenderer.prototype.setSize = function (width, height, animate) {\n var renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n };\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.g = function (name) {\n var elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n };\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.image = function (src, x, y, width, height, onload) {\n var attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n var elemWrapper = this.createElement('image').attr(attribs),\n onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element,\n src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n var dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n };\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n SVGRenderer.prototype.symbol = function (symbol, x, y, width, height, options) {\n var ren = this,\n imageRegex = /^url\\((.*?)\\)$/,\n isImage = imageRegex.test(symbol),\n sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n var obj,\n path,\n imageSrc,\n centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n var img_1 = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img_1.imgwidth = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].width, options && options.width);\n img_1.imgheight = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].height, options && options.height);\n /**\n * Set the size and position\n */\n centerImage = function (obj) { return obj.attr({\n width: obj.width,\n height: obj.height\n }); };\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img_1[key + 'Setter'] = function (value, key) {\n this[key] = value;\n var _a = this,\n alignByTranslate = _a.alignByTranslate,\n element = _a.element,\n width = _a.width,\n height = _a.height,\n imgwidth = _a.imgwidth,\n imgheight = _a.imgheight;\n var imgSize = this['img' + key];\n if (defined(imgSize)) {\n var scale = 1;\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n width &&\n height) {\n scale = Math.min(width / imgwidth, height / imgheight);\n imgSize = Math.round(imgSize * scale);\n // Update both width and height to keep the ratio\n // correct (#17315)\n attr(element, {\n width: Math.round(imgwidth * scale),\n height: Math.round(imgheight * scale)\n });\n }\n else if (element) {\n element.setAttribute(key, imgSize);\n }\n if (!alignByTranslate) {\n this.translate(((width || 0) - (imgSize * scale)) / 2, ((height || 0) - (imgSize * scale)) / 2);\n }\n }\n };\n });\n if (defined(x)) {\n img_1.attr({\n x: x,\n y: y\n });\n }\n img_1.isImg = true;\n if (defined(img_1.imgwidth) && defined(img_1.imgheight)) {\n centerImage(img_1);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img_1.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n var chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img_1.imgwidth = this.width;\n img_1.imgheight = this.height;\n if (img_1.element) {\n centerImage(img_1);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n };\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n SVGRenderer.prototype.clipRect = function (x, y, width, height) {\n var \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n };\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n SVGRenderer.prototype.text = function (str, x, y, useHTML) {\n var renderer = this,\n attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n var wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n var tspans = element.getElementsByTagName('tspan'),\n parentVal = element.getAttribute(key);\n for (var i = 0, tspan = void 0; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n };\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {number|string} [fontSize]\n * The current font size to inspect. If not given, the font size\n * will be found from the DOM element.\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement} [elem]\n * The element to inspect for a current font size.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n SVGRenderer.prototype.fontMetrics = function (fontSize, elem) {\n if ((this.styledMode || !/px/.test(fontSize)) &&\n (win.getComputedStyle) // old IE doesn't support it\n ) {\n fontSize = elem && SVGElement.prototype.getStyle.call(elem, 'font-size');\n }\n else {\n fontSize = fontSize ||\n // When the elem is a DOM element (#5932)\n (elem && elem.style && elem.style.fontSize) ||\n // Fall back on the renderer style default\n (this.style && this.style.fontSize);\n }\n // Handle different units\n if (/px/.test(fontSize)) {\n fontSize = pInt(fontSize);\n }\n else {\n fontSize = 12;\n }\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n var lineHeight = (fontSize < 24 ?\n fontSize + 3 :\n Math.round(fontSize * 1.2)),\n baseline = Math.round(lineHeight * 0.8);\n return {\n h: lineHeight,\n b: baseline,\n f: fontSize\n };\n };\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n SVGRenderer.prototype.rotCorr = function (baseline, rotation, alterY) {\n var y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n };\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n SVGRenderer.prototype.pathToSegments = function (path) {\n var ret = [];\n var segment = [];\n var commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (var i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n };\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n SVGRenderer.prototype.label = function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n };\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n SVGRenderer.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (el) { return el.align(); });\n };\n return SVGRenderer;\n }());\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class. The VMLRenderer\n * will have a pointer to VMLElement here.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS: SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array|Array|Array|Array|Array|Array)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n win = H.win;\n var css = U.css,\n defined = U.defined,\n extend = U.extend,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n var HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n function HTMLElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n HTMLElement.compose = function (SVGElementClass) {\n if (HTMLElement.composedClasses.indexOf(SVGElementClass) === -1) {\n HTMLElement.composedClasses.push(SVGElementClass);\n var htmlElementProto = HTMLElement.prototype,\n svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n HTMLElement.prototype.getSpanCorrection = function (width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n };\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering and\n * by the VML renderer\n * @private\n */\n HTMLElement.prototype.htmlCss = function (styles) {\n var wrapper = this,\n element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles),\n textWidth = pick(isSettingWidth && styles.width,\n void 0);\n var doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n /**\n * VML and useHTML method for calculating the bounding box based on offsets.\n */\n HTMLElement.prototype.htmlGetBBox = function () {\n var wrapper = this,\n element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n };\n /**\n * VML override private method to update elements based on internal\n * properties based on SVG transform.\n * @private\n */\n HTMLElement.prototype.htmlUpdateTransform = function () {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n var wrapper = this,\n renderer = wrapper.renderer,\n elem = wrapper.element,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n x = wrapper.x || 0,\n y = wrapper.y || 0,\n align = wrapper.textAlign || 'left',\n alignCorrection = {\n left: 0,\n center: 0.5,\n right: 1\n }[align],\n styles = wrapper.styles,\n whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip\n wrapper.shadows.forEach(function (shadow) {\n css(shadow, {\n marginLeft: translateX + 1,\n marginTop: translateY + 1\n });\n });\n }\n // apply inversion\n if (wrapper.inverted) { // wrapper is a group\n [].forEach.call(elem.childNodes, function (child) {\n renderer.invertChild(child, elem);\n });\n }\n if (elem.tagName === 'SPAN') {\n var rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n var baseline = void 0,\n hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n var textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n };\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n HTMLElement.prototype.setSpanRotation = function (rotation, alignCorrection, baseline) {\n var getTransformKey = function () { return (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0); };\n var rotationStyle = {},\n cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLElement.composedClasses = [];\n return HTMLElement;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var attr = U.attr,\n createElement = U.createElement,\n extend = U.extend,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n var HTMLRenderer = /** @class */ (function (_super) {\n __extends(HTMLRenderer, _super);\n function HTMLRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n HTMLRenderer.compose = function (SVGRendererClass) {\n if (HTMLRenderer.composedClasses.indexOf(SVGRendererClass) === -1) {\n HTMLRenderer.composedClasses.push(SVGRendererClass);\n var htmlRendererProto = HTMLRenderer.prototype,\n svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the VML renderer as well as the\n * SVG renderer through the useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n HTMLRenderer.prototype.html = function (str, x, y) {\n var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n var styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n // Add setters for the element itself (#4938)\n if (isSVG) { // #4938, only for HTML within SVG\n addSetters(wrapper, wrapper.element.style);\n }\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method. Same as VML.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n // This is specific for HTML within SVG\n if (isSVG) {\n wrapper.add = function (svgGroupWrapper) {\n var container = renderer.box.parentNode,\n parents = [];\n var htmlGroup,\n parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n var cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n var parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n cursor: parentGroupStyles.cursor,\n pointerEvents: (\n // #5595\n parentGroupStyles.pointerEvents),\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n var htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n // Shared with VML:\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n }\n return wrapper;\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLRenderer.composedClasses = [];\n return HTMLRenderer;\n }(SVGRenderer));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes, with y axis label\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * Polar charts only. The label's pixel distance from the perimeter\n * of the plot area.\n *\n * @type {number}\n * @default undefined\n * @product highcharts gantt\n */\n distance: void 0,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n * @default {highcharts|highstock|gantt} true\n * @default {highmaps} false\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: 0,\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. The default makes it adapt to the font\n * size of the bottom axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '11px'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. Unless\n * [minorTickInterval](#xAxis.minorTickInterval) is set, the tick\n * interval is calculated as a fifth of the `tickInterval`.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter approximately 5 minor ticks between\n * each major tick.\n *\n * Prior to v6.0.0, ticks were unabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts}\n * On axes using [categories](#xAxis.categories), minor ticks are not\n * supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/\n * Enabled on linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @type {boolean}\n * @default undefined\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n lineColor: \"#ccd6eb\" /* Palette.highlightColor20 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n tickColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * Gauge with stops\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @type {Array>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n /**\n * Whether to show the last tick label.\n *\n * @productdesc {highcharts|gantt}\n * Defaults to `true` on cartesian charts, and `false` on polar charts.\n *\n * @productdesc {highstock}\n * Defaults to `true` for categorized yAxis and `false` for other types\n * of yAxis.\n *\n * @default undefined\n */\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * Angular gauges and solid gauges only.\n * The label's pixel distance from the perimeter of the plot area.\n *\n * Since v7.1.2: If it's a percentage string, it is interpreted the\n * same as [series.radius](#plotOptions.gauge.radius), so label can be\n * aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Labels centered under the arc\n *\n * @type {number|string}\n * @default -25\n * @product highcharts\n * @apioption yAxis.labels.distance\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @see [yAxis.labels.distance](#yAxis.labels.distance)\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highstock} right\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: -8\n },\n /**\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @type {Highcharts.ColorType}\n * @apioption yAxis.lineColor\n */\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n var numberFormatter = this.axis.chart.numberFormatter;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total || 0, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n isFunction = U.isFunction,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event);\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n var Tick = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tick(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n Tick.prototype.addLabel = function () {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n chart = axis.chart,\n categories = axis.categories,\n log = axis.logarithmic,\n names = axis.names,\n pos = tick.pos,\n labelOptions = pick(tick.options && tick.options.labels,\n options.labels),\n tickPositions = axis.tickPositions,\n isFirst = pos === tickPositions[0],\n isLast = pos === tickPositions[tickPositions.length - 1],\n animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1,\n tickPositionInfo = tickPositions.info;\n var label = tick.label,\n dateTimeLabelFormat,\n dateTimeLabelFormats,\n i;\n // The context value\n var value = this.parameters.category || (categories ?\n pick(categories[pos],\n names[pos],\n pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, options.dateTimeLabelFormats ||\n {});\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n var ctx = {\n axis: axis,\n chart: chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst: isFirst,\n isLast: isLast,\n pos: pos,\n tick: tick,\n tickPositionInfo: tickPositionInfo,\n value: value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n var labelFormatter = function (ctx) {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx,\n ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx, ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n var str = labelFormatter.call(ctx,\n ctx);\n // Set up conditional formatting based on the format list if existing.\n var list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n };\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n Tick.prototype.createLabel = function (xy, str, labelOptions) {\n var axis = this.axis,\n chart = axis.chart,\n label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str,\n xy.x,\n xy.y,\n labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n };\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n Tick.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n Tick.prototype.getPosition = function (horiz, tickPos, tickmarkOffset, old) {\n var axis = this.axis,\n chart = axis.chart,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n };\n /**\n * Get the x, y position of the tick label\n * @private\n */\n Tick.prototype.getLabelPosition = function (x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var axis = this.axis,\n transA = axis.transA,\n reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed),\n staggerLines = axis.staggerLines,\n rotCorr = axis.tickRotCorr || { x: 0,\n y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0),\n pos = {};\n var yOffset,\n line;\n if (axis.side === 0) {\n yOffset = label.rotation ? -8 : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + 8;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n if (defined(labelOptions.y)) {\n yOffset = axis.side === 0 && axis.horiz ?\n labelOptions.y + yOffset :\n labelOptions.y;\n }\n x = x +\n labelOptions.x +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n };\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n Tick.prototype.getLabelSize = function () {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n };\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n Tick.prototype.getMarkPath = function (x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n };\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n Tick.prototype.handleOverflow = function (xy) {\n var tick = this,\n axis = this.axis,\n labelOptions = axis.options.labels,\n pxPos = xy.x,\n chartWidth = axis.chart.chartWidth,\n spacing = axis.chart.spacing,\n leftBound = pick(axis.labelLeft,\n Math.min(axis.pos,\n spacing[3])),\n rightBound = pick(axis.labelRight,\n Math.max(!axis.isRadial ? axis.pos + axis.len : 0,\n chartWidth - spacing[1])),\n label = this.label,\n rotation = this.rotation,\n factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')],\n labelWidth = label.getBBox().width,\n slotWidth = axis.getSlotWidth(tick),\n xCorrection = factor,\n css = {};\n var modifiedSlotWidth = slotWidth,\n goRight = 1,\n leftPos,\n rightPos,\n textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n };\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n Tick.prototype.moveLabel = function (str, labelOptions) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var moved = false,\n labelPos,\n xPos,\n yPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n xPos = axis.horiz ?\n (reversed ? 0 : axis.width + axis.left) : labelPos.x;\n yPos = axis.horiz ?\n labelPos.y : (reversed ? (axis.width + axis.left) : 0);\n tick.movedLabel = tick.createLabel({ x: xPos, y: yPos }, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n };\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n Tick.prototype.render = function (index, old, opacity) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n pos = tick.pos,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n xy = tick.getPosition(horiz,\n pos,\n tickmarkOffset,\n old),\n x = xy.x,\n y = xy.y,\n reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n var labelOpacity = pick(opacity,\n tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderGridLine = function (old, opacity, reverseCrisp) {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n attribs = {},\n pos = tick.pos,\n type = tick.type,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n renderer = axis.chart.renderer;\n var gridLine = tick.gridLine,\n gridLinePath,\n gridLineWidth = options.gridLineWidth,\n gridLineColor = options.gridLineColor,\n dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old,\n acrossPanes: false // #18025\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n };\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderMark = function (xy, opacity, reverseCrisp) {\n var tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n var mark = tick.mark;\n var isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n };\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n Tick.prototype.renderLabel = function (xy, old, opacity, index) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n options = axis.options,\n label = tick.label,\n labelOptions = options.labels,\n step = labelOptions.step,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n x = xy.x,\n y = xy.y;\n var show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy).show(true);\n tick.isNewLabel = false;\n }\n else {\n label.hide(); // #1338, #15863\n tick.isNewLabel = true;\n }\n }\n };\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n Tick.prototype.replaceMovedLabel = function () {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var x,\n y;\n // Animate and destroy\n if (label && !tick.isNew) {\n x = axis.horiz ? (reversed ? axis.left : axis.width + axis.left) : label.xy.x;\n y = axis.horiz ?\n label.xy.y :\n (reversed ? axis.width + axis.top : axis.top);\n label.animate({ x: x, y: y, opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n };\n return Tick;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var deg2rad = H.deg2rad;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n normalizeTickInterval = U.normalizeTickInterval,\n objectEach = U.objectEach,\n pick = U.pick,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n var getNormalizedTickInterval = function (axis,\n tickInterval) { return normalizeTickInterval(tickInterval,\n void 0,\n void 0,\n pick(axis.options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid decimals, as\n // linear axes are often used to render discrete values (#3363). If\n // a tick amount is set, allow decimals by default, as it increases\n // the chances for a good fit.\n tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount); };\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n var Axis = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Axis(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n Axis.prototype.init = function (chart, userOptions) {\n var isXAxis = userOptions.isX,\n axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n var options = this.options,\n labelsOptions = options.labels,\n type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array}\n * @readonly\n */\n axis.categories = options.categories || (axis.hasNames ? [] : void 0);\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n var crosshair = pick(options.crosshair,\n splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n };\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n Axis.prototype.setOptions = function (userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n };\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n Axis.prototype.defaultLabelFormatter = function (ctx) {\n var axis = this.axis,\n chart = this.chart,\n numberFormatter = chart.numberFormatter,\n value = isNumber(this.value) ? this.value : NaN,\n time = axis.chart.time,\n categories = axis.categories,\n dateTimeLabelFormat = this.dateTimeLabelFormat,\n lang = defaultOptions.lang,\n numericSymbols = lang.numericSymbols,\n numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n var i = numericSymbols && numericSymbols.length,\n multi,\n ret;\n if (categories) {\n ret = \"\".concat(this.value);\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n };\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n Axis.prototype.getSeriesExtremes = function () {\n var axis = this,\n chart = axis.chart;\n var xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n // Loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n var seriesOptions = series.options;\n var xData = void 0,\n threshold = seriesOptions.threshold,\n seriesDataMin = void 0,\n seriesDataMax = void 0;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData.length) {\n xData = axis.logarithmic ?\n xData.filter(axis.validatePositiveValue) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n var dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n };\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n Axis.prototype.translate = function (val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n var axis = (this.linkedParent || this), // #1417\n localMin = (old && axis.old ? axis.old.min : axis.min);\n if (!isNumber(localMin)) {\n return NaN;\n }\n var minPixelPadding = axis.minPixelPadding,\n doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n var sign = 1,\n cvsOffset = 0,\n localA = old && axis.old ? axis.old.transA : axis.transA,\n returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n var value = sign * (val - localMin) * localA;\n returnValue = (!axis.isRadial ? correctFloat(value) : value) +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ? localA * pointPlacement : 0);\n }\n return returnValue;\n };\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n Axis.prototype.toPixels = function (value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, void 0, true) +\n (paneCoordinates ? 0 : this.pos);\n };\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n Axis.prototype.toValue = function (pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, void 0, true);\n };\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n Axis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n chart = axis.chart,\n axisLeft = axis.left,\n axisTop = axis.top,\n old = options.old,\n value = options.value,\n lineWidth = options.lineWidth,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n cWidth = (old && chart.oldChartWidth) || chart.chartWidth,\n transB = axis.transB;\n var translatedValue = options.translatedValue,\n force = options.force,\n x1,\n y1,\n x2,\n y2,\n skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && (x < a || x > b)) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n var evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n };\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getLinearTickPositions = function (tickInterval, min, max) {\n var roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval),\n roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval),\n tickPositions = [];\n var pos,\n lastPos,\n precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n };\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n Axis.prototype.getMinorTickInterval = function () {\n var options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n };\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getMinorTickPositions = function () {\n var axis = this,\n options = axis.options,\n tickPositions = axis.tickPositions,\n minorTickInterval = axis.minorTickInterval,\n pointRangePadding = axis.pointRangePadding || 0,\n min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n var minorTickPositions = [],\n pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n var logarithmic_1 = axis.logarithmic;\n if (logarithmic_1) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic_1.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n };\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n Axis.prototype.adjustForMinRange = function () {\n var axis = this,\n options = axis.options,\n log = axis.logarithmic;\n var min = axis.min,\n max = axis.max,\n zoomOffset,\n spaceAvailable,\n closestDataRange = 0,\n i,\n distance,\n xData,\n loopLength,\n minArgs,\n maxArgs,\n minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n };\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n Axis.prototype.getClosest = function () {\n var ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n var seriesClosest = series.closestPointRange,\n visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n };\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n Axis.prototype.nameToX = function (point) {\n var explicitCategories = isArray(this.options.categories),\n names = explicitCategories ? this.categories : this.names;\n var nameX = point.options.x,\n x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames && names ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories && names) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n else if (point.x) {\n x = point.x; // #17438\n }\n return x;\n };\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n Axis.prototype.updateNames = function () {\n var axis = this,\n names = this.names,\n i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n var x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n };\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n Axis.prototype.setAxisTranslation = function () {\n var axis = this,\n range = axis.max - axis.min,\n linkedParent = axis.linkedParent,\n hasCategories = !!axis.categories,\n isXAxis = axis.isXAxis;\n var pointRange = axis.axisPointRange || 0,\n closestPointRange,\n minPointOffset = 0,\n pointRangePadding = 0,\n ordinalCorrection,\n transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n var seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange,\n closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n var isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n };\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n Axis.prototype.minFromRange = function () {\n var axis = this;\n return axis.max - axis.range;\n };\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n Axis.prototype.setTickInterval = function (secondPass) {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n options = axis.options,\n isXAxis = axis.isXAxis,\n isLinked = axis.isLinked,\n tickPixelIntervalOption = options.tickPixelInterval,\n categories = axis.categories,\n softThreshold = axis.softThreshold;\n var maxPadding = options.maxPadding,\n minPadding = options.minPadding,\n length,\n linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0,\n threshold = isNumber(axis.threshold) ? axis.threshold : null,\n thresholdMin,\n thresholdMax,\n hardMin,\n hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n var hasExtremesChanged_1 = axis.min !==\n (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtremesChanged_1);\n });\n // Then apply grouping if needed. The hasExtremesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtremesChanged: hasExtremesChanged_1 });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n var minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some(function (s) { return s.noSharedTooltip; }) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // For linear axes, normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = getNormalizedTickInterval(axis, axis.tickInterval);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n };\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n Axis.prototype.setTickPositions = function () {\n var axis = this,\n options = this.options,\n tickPositionsOption = options.tickPositions,\n tickPositioner = options.tickPositioner,\n minorTickIntervalOption = this.getMinorTickInterval(),\n hasVerticalPanning = this.hasVerticalPanning(),\n isColorAxis = this.coll === 'colorAxis',\n startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick),\n endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n var tickPositions = [],\n tickPositionerResult;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / 5 :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n if (tickPositionsOption) {\n // Find the tick positions. Work on a copy (#1565)\n tickPositions = tickPositionsOption.slice();\n }\n else if (isNumber(this.min) && isNumber(this.max)) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n var startingTickInterval = this.tickInterval;\n var adjustedTickInterval = startingTickInterval;\n while (adjustedTickInterval <= startingTickInterval * 2) {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n // If there are more tick positions than the set tickAmount,\n // increase the tickInterval and continue until it fits.\n // (#17100)\n if (this.tickAmount &&\n tickPositions.length > this.tickAmount) {\n this.tickInterval = getNormalizedTickInterval(this, adjustedTickInterval *= 1.1);\n }\n else {\n break;\n }\n }\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [\n tickPositions[0],\n tickPositions[tickPositions.length - 1]\n ];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n // Make it available to the positioner\n this.tickPositions = tickPositions;\n tickPositionerResult = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositionerResult) {\n tickPositions = tickPositionerResult;\n }\n }\n }\n this.tickPositions = tickPositions;\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked && isNumber(this.min) && isNumber(this.max)) {\n // Substract half a unit (#2619, #2846, #2515, #3390), but not in\n // case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some(function (s) {\n return (s.is('heatmap') && s.options.pointPlacement === 'between');\n })) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositionerResult) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n };\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n Axis.prototype.trimTicks = function (tickPositions, startOnTick, endOnTick) {\n var roundedMin = tickPositions[0],\n roundedMax = tickPositions[tickPositions.length - 1],\n minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n };\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n Axis.prototype.alignToOthers = function () {\n var axis = this,\n alignedAxes = [this],\n options = axis.options,\n alignThresholds = (this.coll === 'yAxis' &&\n this.chart.options.chart.alignThresholds),\n thresholdAlignments = [];\n var hasOther;\n axis.thresholdAlignment = void 0;\n if ((\n // Only if alignTicks or alignThresholds is true\n (this.chart.options.chart.alignTicks !== false &&\n options.alignTicks) || (alignThresholds)) &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n // Get a key identifying which pane the axis belongs to\n var getKey_1 = function (axis) {\n var horiz = axis.horiz,\n options = axis.options;\n return [\n horiz ? options.left : options.top,\n options.width,\n options.height,\n options.pane\n ].join(',');\n };\n var thisKey_1 = getKey_1(this);\n this.chart[this.coll].forEach(function (otherAxis) {\n var series = otherAxis.series;\n if (\n // #4442\n series.length &&\n series.some(function (s) { return s.visible; }) &&\n otherAxis !== axis &&\n getKey_1(otherAxis) === thisKey_1) {\n hasOther = true; // #4201\n alignedAxes.push(otherAxis);\n }\n });\n }\n if (hasOther && alignThresholds) {\n // Handle alignThresholds. The `thresholdAlignments` array keeps\n // records of where each axis in the group wants its threshold, from\n // 0 which is on `axis.min`, to 1 which is on `axis.max`.\n alignedAxes.forEach(function (otherAxis) {\n var threshAlign = otherAxis.getThresholdAlignment(axis);\n if (isNumber(threshAlign)) {\n thresholdAlignments.push(threshAlign);\n }\n });\n // For each of the axes in the group, record the average\n // `thresholdAlignment`.\n var thresholdAlignment_1 = thresholdAlignments.length > 1 ?\n thresholdAlignments.reduce(function (sum,\n n) { return (sum += n); }, 0) / thresholdAlignments.length :\n void 0;\n alignedAxes.forEach(function (axis) {\n axis.thresholdAlignment = thresholdAlignment_1;\n });\n }\n return hasOther;\n };\n /**\n * Where the axis wants its threshold, from 0 which is on `axis.min`, to 1 which\n * is on `axis.max`.\n *\n * @private\n * @function Highcharts.Axis#getThresholdAlignment\n */\n Axis.prototype.getThresholdAlignment = function (callerAxis) {\n if (!isNumber(this.dataMin) ||\n (this !== callerAxis &&\n this.series.some(function (s) { return (s.isDirty || s.isDirtyData); }))) {\n this.getSeriesExtremes();\n }\n if (isNumber(this.threshold)) {\n var thresholdAlignment = clamp(((this.threshold - (this.dataMin || 0)) /\n ((this.dataMax || 0) - (this.dataMin || 0))), 0, 1);\n if (this.options.reversed) {\n thresholdAlignment = 1 - thresholdAlignment;\n }\n return thresholdAlignment;\n }\n };\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n Axis.prototype.getTickAmount = function () {\n var axis = this,\n options = this.options,\n tickPixelInterval = options.tickPixelInterval;\n var tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n };\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n Axis.prototype.adjustTickAmount = function () {\n var axis = this,\n finalTickAmt = axis.finalTickAmt,\n max = axis.max,\n min = axis.min,\n options = axis.options,\n tickPositions = axis.tickPositions,\n tickAmount = axis.tickAmount,\n thresholdAlignment = axis.thresholdAlignment,\n currentTickAmount = tickPositions && tickPositions.length,\n threshold = pick(axis.threshold,\n axis.softThreshold ? 0 : null);\n var len,\n i,\n tickInterval = axis.tickInterval,\n thresholdTickIndex;\n var \n // Extend the tickPositions by appending a position\n append = function () { return tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval)); }, \n // Extend the tickPositions by prepending a position\n prepend = function () { return tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval)); };\n // If `thresholdAlignment` is a number, it means the `alignThresholds`\n // option is true. The `thresholdAlignment` is a scalar value between 0\n // and 1 for where the threshold should be relative to `axis.min` and\n // `axis.max`. Now that we know the tick amount, convert this to the\n // tick index. Unless `thresholdAlignment` is exactly 0 or 1, avoid the\n // first or last tick because that would lead to series being clipped.\n if (isNumber(thresholdAlignment)) {\n thresholdTickIndex = thresholdAlignment < 0.5 ?\n Math.ceil(thresholdAlignment * (tickAmount - 1)) :\n Math.floor(thresholdAlignment * (tickAmount - 1));\n if (options.reversed) {\n thresholdTickIndex = tickAmount - 1 - thresholdTickIndex;\n }\n }\n if (axis.hasData() && isNumber(min) && isNumber(max)) { // #14769\n // Adjust extremes and translation to the modified tick positions\n var adjustExtremes = function () {\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = options.startOnTick ?\n tickPositions[0] :\n Math.min(min, tickPositions[0]);\n axis.max = options.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(max, tickPositions[tickPositions.length - 1]);\n };\n // When the axis is subject to the alignThresholds option. Use\n // axis.threshold because the local threshold includes the\n // `softThreshold`.\n if (isNumber(thresholdTickIndex) && isNumber(axis.threshold)) {\n // Throw away the previously computed tickPositions and start\n // from scratch with only the threshold itself, then add ticks\n // below the threshold first, then fill up above the threshold.\n // If we are not able to fill up to axis.max, double the\n // tickInterval and run again.\n while (tickPositions[thresholdTickIndex] !== threshold ||\n tickPositions.length !== tickAmount ||\n tickPositions[0] > min ||\n tickPositions[tickPositions.length - 1] < max) {\n tickPositions.length = 0;\n tickPositions.push(axis.threshold);\n while (tickPositions.length < tickAmount) {\n if (\n // Start by prepending positions until the threshold\n // is at the required index...\n tickPositions[thresholdTickIndex] === void 0 ||\n tickPositions[thresholdTickIndex] > axis.threshold) {\n prepend();\n }\n else {\n // ... then append positions until we have the\n // required length\n append();\n }\n }\n // Safety vent\n if (tickInterval > axis.tickInterval * 8) {\n break;\n }\n tickInterval *= 2;\n }\n adjustExtremes();\n }\n else if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 || min === threshold) {\n append();\n }\n else {\n prepend();\n }\n }\n adjustExtremes();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n };\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n Axis.prototype.setScale = function () {\n var axis = this;\n var isDirtyData = false,\n isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n var isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n axis.stacking.buildStacks();\n }\n axis.forceRedraw = false;\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n };\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n Axis.prototype.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n var axis = this,\n chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n };\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n Axis.prototype.zoom = function (newMin, newMax) {\n var axis = this,\n dataMin = this.dataMin,\n dataMax = this.dataMax,\n options = this.options,\n min = Math.min(dataMin,\n pick(options.min,\n dataMin)),\n max = Math.max(dataMax,\n pick(options.max,\n dataMax)),\n evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n var newMin = e.newMin,\n newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n };\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n Axis.prototype.setAxisSize = function () {\n var chart = this.chart,\n options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0],\n horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width,\n chart.plotWidth - offsets[3] + offsets[1]),\n chart.plotWidth)),\n height = this.height = Math.round(relativeLength(pick(options.height,\n chart.plotHeight - offsets[0] + offsets[2]),\n chart.plotHeight)),\n top = this.top = Math.round(relativeLength(pick(options.top,\n chart.plotTop + offsets[0]),\n chart.plotHeight,\n chart.plotTop)),\n left = this.left = Math.round(relativeLength(pick(options.left,\n chart.plotLeft + offsets[3]),\n chart.plotWidth,\n chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n };\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n Axis.prototype.getExtremes = function () {\n var axis = this,\n log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n };\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n Axis.prototype.getThreshold = function (threshold) {\n var axis = this,\n log = axis.logarithmic,\n realMin = log ? log.lin2log(axis.min) : axis.min,\n realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n };\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n Axis.prototype.autoLabelAlign = function (rotation) {\n var angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360,\n evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n };\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array|undefined}\n * An array of tickLength and tickWidth\n */\n Axis.prototype.tickSize = function (prefix) {\n var options = this.options,\n tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n var tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'],\n tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n var e = { tickSize: tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n };\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n Axis.prototype.labelMetrics = function () {\n var index = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[index] && this.ticks[index].label);\n };\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n Axis.prototype.unsquish = function () {\n var labelOptions = this.options.labels,\n horiz = this.horiz,\n tickInterval = this.tickInterval,\n slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval),\n rotationOption = labelOptions.rotation,\n labelMetrics = this.labelMetrics(),\n range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n var step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n var newTickInterval = tickInterval,\n rotation,\n bestScore = Number.MAX_VALUE,\n autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n var step = void 0,\n score = void 0;\n // Loop over the given autoRotation options, and determine which\n // gives the best score. The best score is that with the lowest\n // number of steps and a rotation closest to horizontal.\n for (var _i = 0, autoRotation_1 = autoRotation; _i < autoRotation_1.length; _i++) {\n var rot = autoRotation_1[_i];\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(labelMetrics.h / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n }\n }\n }\n else { // #4411\n newTickInterval = getStep(labelMetrics.h);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return labelOptions.step ? tickInterval : newTickInterval;\n };\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n Axis.prototype.getSlotWidth = function (tick) {\n // #5086, #1580, #1931\n var chart = this.chart,\n horiz = this.horiz,\n labelOptions = this.options.labels,\n slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n var cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n };\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n Axis.prototype.renderUnsquish = function () {\n var chart = this.chart,\n renderer = chart.renderer,\n tickPositions = this.tickPositions,\n ticks = this.ticks,\n labelOptions = this.options.labels,\n labelStyleOptions = labelOptions.style,\n horiz = this.horiz,\n slotWidth = this.getSlotWidth(),\n innerWidth = Math.max(1,\n Math.round(slotWidth - 2 * labelOptions.padding)),\n attr = {},\n labelMetrics = this.labelMetrics(),\n textOverflowOption = labelStyleOptions.textOverflow;\n var commonWidth,\n commonTextOverflow,\n maxLabelLength = 0,\n label,\n i,\n pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n var tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos],\n label = tick && tick.label,\n widthOption = labelStyleOptions.width,\n css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n };\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n Axis.prototype.hasData = function () {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n };\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n Axis.prototype.addTitle = function (display) {\n var axis = this,\n renderer = axis.chart.renderer,\n horiz = axis.horiz,\n opposite = axis.opposite,\n options = axis.options,\n axisTitleOptions = options.title,\n styledMode = axis.chart.styledMode;\n var textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n };\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n Axis.prototype.generateTick = function (pos) {\n var axis = this,\n ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n };\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n Axis.prototype.getOffset = function () {\n var _this = this;\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n options = axis.options,\n side = axis.side,\n ticks = axis.ticks,\n tickPositions = axis.tickPositions,\n coll = axis.coll,\n axisParent = axis.axisParent // Used in color axis\n ,\n renderer = chart.renderer,\n invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side),\n hasData = axis.hasData(),\n axisTitleOptions = options.title,\n labelOptions = options.labels,\n axisOffset = chart.axisOffset,\n clipOffset = chart.clipOffset,\n directionFactor = [-1, 1, 1, -1][side],\n className = options.className;\n var showAxis,\n titleOffset = 0,\n titleOffsetOption,\n titleMargin = 0,\n labelOffset = 0, // reset\n labelOffsetPadded,\n lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n var createGroup = function (name, suffix, zIndex) { return renderer.g(name)\n .attr({ zIndex: zIndex })\n .addClass(\"highcharts-\".concat(coll.toLowerCase()).concat(suffix, \" \") +\n (_this.isRadial ? \"highcharts-radial-axis\".concat(suffix, \" \") : '') +\n (className || ''))\n .add(axisParent); };\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis && axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) :\n labelOptions.x);\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n var tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n var clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n };\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Axis.prototype.getLinePath = function (lineWidth) {\n var chart = this.chart,\n opposite = this.opposite,\n offset = this.offset,\n horiz = this.horiz,\n lineLeft = this.left + (opposite ? this.width : 0) + offset,\n lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n };\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n Axis.prototype.renderLine = function () {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n };\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n Axis.prototype.getTitlePosition = function () {\n // compute anchor points for each of the title align options\n var horiz = this.horiz,\n axisLeft = this.left,\n axisTop = this.top,\n axisLength = this.len,\n axisTitleOptions = this.options.title,\n margin = horiz ? axisLeft : axisTop,\n opposite = this.opposite,\n offset = this.offset,\n xOption = axisTitleOptions.x,\n yOption = axisTitleOptions.y,\n axisTitle = this.axisTitle,\n fontMetrics = this.chart.renderer.fontMetrics(axisTitleOptions.style.fontSize,\n axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = axisTitle ? Math.max(axisTitle.getBBox(false, 0).height - fontMetrics.h - 1, 0) : 0, \n // the position in the length direction of the axis\n alongAxis = ({\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n })[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n (this.axisTitleMargin || 0) +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side],\n titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n };\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderMinorTick = function (pos, slideIn) {\n var axis = this;\n var minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n };\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderTick = function (pos, i, slideIn) {\n var axis = this,\n isLinked = axis.isLinked,\n ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n };\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n Axis.prototype.render = function () {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n renderer = chart.renderer,\n options = axis.options,\n isLinked = axis.isLinked,\n tickPositions = axis.tickPositions,\n axisTitle = axis.axisTitle,\n ticks = axis.ticks,\n minorTicks = axis.minorTicks,\n alternateBands = axis.alternateBands,\n stackLabelOptions = options.stackLabels,\n alternateGridColor = options.alternateGridColor,\n tickmarkOffset = axis.tickmarkOffset,\n axisLine = axis.axisLine,\n showAxis = axis.showAxis,\n animation = animObject(renderer.globalAnimation);\n var from,\n to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n var slideInTicks_1 = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks_1);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks_1);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n var forDestruction = [],\n delay = animation.duration,\n destroyInactiveItems = function () {\n var i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n var titleXy = axis.getTitlePosition();\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](titleXy);\n axisTitle.isNew = false;\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n Axis.prototype.redraw = function () {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n };\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n Axis.prototype.getKeepProps = function () {\n return (this.keepProps || Axis.keepProps);\n };\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n Axis.prototype.destroy = function (keepEvents) {\n var axis = this,\n plotLinesAndBands = axis.plotLinesAndBands,\n eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n var i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (var plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n Axis.prototype.drawCrosshair = function (e, point) {\n var options = this.crosshair,\n snap = pick(options && options.snap,\n true),\n chart = this.chart;\n var path,\n pos,\n categorized,\n graphic = this.cross,\n crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd6eb\" /* Palette.highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* Palette.neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n };\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n Axis.prototype.hideCrosshair = function () {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n };\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n Axis.prototype.hasVerticalPanning = function () {\n var panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n };\n /**\n * Check whether the given value is a positive valid axis value.\n *\n * @private\n * @function Highcharts.Axis#validatePositiveValue\n *\n * @param {unknown} value\n * The axis value\n */\n Axis.prototype.validatePositiveValue = function (value) {\n return isNumber(value) && value > 0;\n };\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n Axis.prototype.update = function (options, redraw) {\n var chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n Axis.prototype.remove = function (redraw) {\n var chart = this.chart,\n key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n var i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n Axis.prototype.setTitle = function (titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n };\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n Axis.prototype.setCategories = function (categories, redraw) {\n this.update({ categories: categories }, redraw);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n return Axis;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Default formatting of date/time labels.\n * @name Highcharts.AxisLabelsFormatterContextObject#dateTimeLabelFormat\n * @type {string|undefined}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string|undefined}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n timeUnits = U.timeUnits;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('dateTime');\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n var units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1, 2]\n ],\n [\n 'week',\n [1, 2]\n ],\n [\n 'month',\n [1, 2, 3, 4, 6]\n ],\n [\n 'year',\n null\n ]]);\n var unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]],\n multiples = unit[1],\n i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n var lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n var count = normalizeTickInterval(tickInterval / interval,\n multiples,\n unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n };\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n var axis = this.axis,\n time = axis.chart.time;\n return axis.closestPointRange ?\n time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n // #2546, 2581\n time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n };\n return Additions;\n }());\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n var logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n var axis = this;\n var log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n Additions.prototype.getLogTickPositions = function (interval, min, max, minor) {\n var log = this;\n var axis = log.axis;\n var axisLength = axis.len;\n var options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n var positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n var roundedMin = Math.floor(min);\n var intermediate = void 0,\n i = void 0,\n j = void 0,\n len = void 0,\n pos = void 0,\n lastPos = void 0,\n break2 = void 0;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n var realMin = log.lin2log(min),\n realMax = log.lin2log(max),\n tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval,\n filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption,\n tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),\n totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval);\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n };\n Additions.prototype.lin2log = function (num) {\n return Math.pow(10, num);\n };\n Additions.prototype.log2lin = function (num) {\n return Math.log(num) / Math.LN10;\n };\n return Additions;\n }());\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var erase = U.erase,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n extend(AxisClass.prototype, Additions.prototype);\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /* *\n *\n * Classes\n *\n * */\n /**\n * Object with members for extending the Axis prototype.\n * @private\n */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Additions.prototype.getPlotBandPath = function (from, to, options) {\n if (options === void 0) { options = this.options; }\n var toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n var path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }),\n i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1,\n isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n var pathStart = path[i],\n pathEnd = path[i + 1],\n toPathStart = toPath[i],\n toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n };\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n Additions.prototype.addPlotBand = function (options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n };\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n Additions.prototype.addPlotLine = function (options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n };\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n Additions.prototype.addPlotBandOrLine = function (options, coll) {\n var _this = this;\n var userOptions = this.userOptions;\n var obj = new PlotLineOrBandClass(this,\n options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach(function (plotLineOptions) {\n _this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n var updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n };\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n Additions.prototype.removePlotBandOrLine = function (id) {\n var plotLinesAndBands = this.plotLinesAndBands,\n options = this.options,\n userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n var i_1 = plotLinesAndBands.length;\n while (i_1--) {\n if (plotLinesAndBands[i_1].id === id) {\n plotLinesAndBands[i_1].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i_1 = arr.length;\n while (i_1--) {\n if ((arr[i_1] || {}).id === id) {\n erase(arr, arr[i_1]);\n }\n }\n });\n }\n };\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n Additions.prototype.removePlotBand = function (id) {\n this.removePlotBandOrLine(id);\n };\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n Additions.prototype.removePlotLine = function (id) {\n this.removePlotBandOrLine(id);\n };\n return Additions;\n }());\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n fireEvent = U.fireEvent,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n var PlotLineOrBand = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PlotLineOrBand(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Static Functions\n *\n * */\n PlotLineOrBand.compose = function (AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n PlotLineOrBand.prototype.render = function () {\n fireEvent(this, 'render');\n var plotLine = this,\n axis = plotLine.axis,\n horiz = axis.horiz,\n log = axis.logarithmic,\n options = plotLine.options,\n color = options.color,\n zIndex = pick(options.zIndex, 0),\n events = options.events,\n groupAttribs = {},\n renderer = axis.chart.renderer;\n var optionsLabel = options.label,\n label = plotLine.label,\n to = options.to,\n from = options.from,\n value = options.value,\n svgElem = plotLine.svgElem,\n path = [],\n group;\n var isBand = defined(from) && defined(to),\n isLine = defined(value),\n isNew = !svgElem,\n attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n var groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* Palette.neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6ebf5\" /* Palette.highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElem\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show();\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n };\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n PlotLineOrBand.prototype.renderLabel = function (optionsLabel, path, isBand, zIndex) {\n var plotLine = this,\n axis = plotLine.axis,\n renderer = axis.chart.renderer;\n var label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex: zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n var xBounds = path.xBounds ||\n [path[0][1],\n path[1][1], (isBand ? path[2][1] : path[0][1])];\n var yBounds = path.yBounds ||\n [path[0][2],\n path[1][2], (isBand ? path[2][2] : path[0][2])];\n var x = arrayMin(xBounds);\n var y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x: x,\n y: y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n var width = optionsLabel.clip ?\n axis.width : axis.chart.chartWidth;\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n };\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n PlotLineOrBand.prototype.getLabelText = function (optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n };\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n PlotLineOrBand.prototype.destroy = function () {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n };\n return PlotLineOrBand;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6ebf5\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Whether to hide labels that are outside the plot area.\n *\n * @type {boolean}\n * @default false\n * @since 10.3.3\n * @apioption xAxis.plotLines.labels.clip\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var doc = H.doc;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n var Tooltip = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tooltip(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * In styled mode, apply the default filter for the tooltip drop-shadow. It\n * needs to have an id specific to the chart, otherwise there will be issues\n * when one tooltip adopts the filter of a different chart, specifically one\n * where the container is hidden.\n *\n * @private\n * @function Highcharts.Tooltip#applyFilter\n */\n Tooltip.prototype.applyFilter = function () {\n var chart = this.chart;\n chart.renderer.definition({\n tagName: 'filter',\n attributes: {\n id: 'drop-shadow-' + chart.index,\n opacity: 0.5\n },\n children: [{\n tagName: 'feGaussianBlur',\n attributes: {\n 'in': 'SourceAlpha',\n stdDeviation: 1\n }\n }, {\n tagName: 'feOffset',\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: 'feComponentTransfer',\n children: [{\n tagName: 'feFuncA',\n attributes: {\n type: 'linear',\n slope: 0.3\n }\n }]\n }, {\n tagName: 'feMerge',\n children: [{\n tagName: 'feMergeNode'\n }, {\n tagName: 'feMergeNode',\n attributes: {\n 'in': 'SourceGraphic'\n }\n }]\n }]\n });\n };\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n Tooltip.prototype.bodyFormatter = function (items) {\n return items.map(function (item) {\n var tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n };\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n Tooltip.prototype.cleanSplit = function (force) {\n this.chart.series.forEach(function (series) {\n var tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n };\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n *\n * @param {Highcharts.Tooltip} tooltip\n *\n * @return {string|Array}\n * Returns a string (single tooltip and shared)\n * or an array of strings (split tooltip)\n */\n Tooltip.prototype.defaultFormatter = function (tooltip) {\n var items = this.points || splat(this);\n var s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n };\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n Tooltip.prototype.destroy = function () {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split && this.tt) {\n this.cleanSplit(true);\n this.tt = this.tt.destroy();\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n };\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n Tooltip.prototype.getAnchor = function (points, mouseEvent) {\n var chart = this.chart,\n pointer = chart.pointer,\n inverted = chart.inverted,\n plotTop = chart.plotTop,\n plotLeft = chart.plotLeft;\n var ret;\n points = splat(points);\n // If reversedStacks are false the tooltip position should be taken from\n // the last point (#17948)\n if (points[0].series &&\n points[0].series.yAxis &&\n !points[0].series.yAxis.options.reversedStacks) {\n points = points.slice().reverse();\n }\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n var chartX_1 = 0,\n chartY_1 = 0;\n points.forEach(function (point) {\n var pos = point.pos(true);\n if (pos) {\n chartX_1 += pos[0];\n chartY_1 += pos[1];\n }\n });\n chartX_1 /= points.length;\n chartY_1 /= points.length;\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n chartX_1 = mouseEvent.chartX;\n }\n else {\n chartY_1 = mouseEvent.chartY;\n }\n }\n // Use the average position for multiple points\n ret = [chartX_1 - plotLeft, chartY_1 - plotTop];\n }\n return ret.map(Math.round);\n };\n /**\n * Get the CSS class names for the tooltip's label. Styles the label\n * by `colorIndex` or user-defined CSS.\n *\n * @function Highcharts.Tooltip#getClassName\n *\n * @return {string}\n * The class names.\n */\n Tooltip.prototype.getClassName = function (point, isSplit, isHeader) {\n var options = this.options,\n series = point.series,\n seriesOptions = series.options;\n return [\n options.className,\n 'highcharts-label',\n isHeader && 'highcharts-tooltip-header',\n isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',\n !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),\n (seriesOptions && seriesOptions.className)\n ].filter(isString).join(' ');\n };\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n Tooltip.prototype.getLabel = function () {\n var tooltip = this,\n styledMode = this.chart.styledMode,\n options = this.options,\n doSplit = this.split && this.allowShared,\n pointerEvents = (options.style.pointerEvents ||\n (this.shouldStickOnContact() ? 'auto' : 'none'));\n var container,\n renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (tooltip.label) {\n var wasSplit = !tooltip.label.hasClass('highcharts-label');\n if ((doSplit && !wasSplit) || (!doSplit && wasSplit)) {\n tooltip.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n var chartStyle = this.chart.options.chart.style,\n Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents: pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g('tooltip');\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, 'tooltip')\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents: pointerEvents })\n .shadow(options.shadow);\n }\n }\n if (styledMode && options.shadow) {\n // Apply the drop-shadow filter\n this.applyFilter();\n this.label.attr({\n filter: 'url(#drop-shadow-' + this.chart.index + ')'\n });\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside && !tooltip.split) {\n var label_1 = this.label;\n var xSetter_1 = label_1.xSetter,\n ySetter_1 = label_1.ySetter;\n label_1.xSetter = function (value) {\n xSetter_1.call(label_1, tooltip.distance);\n container.style.left = value + 'px';\n };\n label_1.ySetter = function (value) {\n ySetter_1.call(label_1, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .attr({ zIndex: 8 })\n .add();\n }\n return this.label;\n };\n /**\n * Place the tooltip in a chart without spilling over and not covering the\n * point itself.\n *\n * @function Highcharts.Tooltip#getPosition\n *\n * @param {number} boxWidth\n * Width of the tooltip box.\n *\n * @param {number} boxHeight\n * Height of the tooltip box.\n *\n * @param {Highcharts.Point} point\n * Tooltip related point.\n *\n * @return {Highcharts.PositionObject}\n * Recommended position of the tooltip.\n */\n Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {\n var chart = this.chart,\n distance = this.distance,\n ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside,\n outerWidth = outside ?\n // substract distance to prevent scrollbars\n doc.documentElement.clientWidth - 2 * distance :\n chart.chartWidth,\n outerHeight = outside ?\n Math.max(doc.body.scrollHeight,\n doc.documentElement.scrollHeight,\n doc.body.offsetHeight,\n doc.documentElement.offsetHeight,\n doc.documentElement.clientHeight) :\n chart.chartHeight,\n chartPosition = chart.pointer.getChartPosition(),\n scaleX = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX); },\n scaleY = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY); }, \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = function (dim) {\n var isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n var first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n var flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n var preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point,\n it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim,\n outerSize,\n innerSize,\n scaledInnerSize, // #11329\n point,\n min,\n max) {\n var scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance,\n scaleDiff = (innerSize - scaledInnerSize) / 2,\n roomLeft = scaledInnerSize < point - distance,\n roomRight = point + distance + scaledInnerSize < outerSize,\n alignedLeft = point - scaledDist - innerSize + scaleDiff,\n alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n var retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n var temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n };\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n Tooltip.prototype.hide = function (delay) {\n var tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n };\n /**\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n Tooltip.prototype.init = function (chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n };\n Tooltip.prototype.shouldStickOnContact = function (pointerEvent) {\n return !!(!this.followPointer &&\n this.options.stickOnContact &&\n (!pointerEvent || this.chart.pointer.inClass(pointerEvent.target, 'highcharts-tooltip')));\n };\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n Tooltip.prototype.move = function (x, y, anchorX, anchorY) {\n var tooltip = this,\n now = tooltip.now,\n animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),\n skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n };\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n Tooltip.prototype.refresh = function (pointOrPoints, mouseEvent) {\n var tooltip = this,\n chart = this.chart,\n options = tooltip.options,\n pointer = chart.pointer,\n points = splat(pointOrPoints),\n point = points[0],\n pointConfig = [],\n formatter = options.formatter || tooltip.defaultFormatter,\n shared = tooltip.shared,\n styledMode = chart.styledMode;\n var textConfig = {};\n if (!options.enabled || !point.series) { // #16820\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n var anchor = tooltip.getAnchor(pointOrPoints,\n mouseEvent),\n x = anchor[0],\n y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n var text = formatter.call(textConfig,\n tooltip);\n // register the current series\n var currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n var checkX_1 = x;\n var checkY_1 = y;\n if (mouseEvent && pointer.isDirectTouch) {\n checkX_1 = mouseEvent.chartX - chart.plotLeft;\n checkY_1 = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some(function (p) {\n return pointer.isDirectTouch || // ##17929\n p.series.shouldShowTooltip(checkX_1, checkY_1);\n })) {\n var label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: chart.spacingBox.width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.addClass(tooltip.getClassName(point), true);\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n };\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array} points\n */\n Tooltip.prototype.renderSplit = function (labels, points) {\n var tooltip = this;\n var chart = tooltip.chart,\n _a = tooltip.chart,\n chartWidth = _a.chartWidth,\n chartHeight = _a.chartHeight,\n plotHeight = _a.plotHeight,\n plotLeft = _a.plotLeft,\n plotTop = _a.plotTop,\n pointer = _a.pointer,\n _b = _a.scrollablePixelsY,\n scrollablePixelsY = _b === void 0 ? 0 : _b,\n scrollablePixelsX = _a.scrollablePixelsX,\n _c = _a.scrollingContainer,\n _d = _c === void 0 ? { scrollLeft: 0,\n scrollTop: 0 } : _c,\n scrollLeft = _d.scrollLeft,\n scrollTop = _d.scrollTop,\n styledMode = _a.styledMode,\n distance = tooltip.distance,\n options = tooltip.options,\n positioner = tooltip.options.positioner;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n var bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n var tooltipLabel = tooltip.getLabel();\n var ren = this.renderer || chart.renderer;\n var headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n var _e = pointer.getChartPosition(),\n chartLeft = _e.left,\n chartTop = _e.top;\n var distributionBoxTop = plotTop + scrollTop;\n var headerHeight = 0;\n var adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n var isHeader = point.isHeader,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b,\n series = point.series;\n var anchorX;\n var anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n var xAxis = series.xAxis,\n yAxis = series.yAxis;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX: anchorX, anchorY: anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft) {\n if (alignedLeft === void 0) { alignedLeft = true; }\n var y;\n var x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x: x, y: y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var tt = partialTooltip;\n var isHeader = point.isHeader,\n series = point.series;\n if (!tt) {\n var attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass(tooltip.getClassName(point, true, isHeader))\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .shadow(options.shadow)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* Palette.neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n var boxes = labels.slice(0,\n points.length + 1).reduce(function (boxes,\n str,\n i) {\n if (str !== false && str !== '') {\n var point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n var isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n var owner = isHeader ? tooltip : point.series;\n var tt = owner.tt = updatePartialTooltip(owner.tt,\n point,\n str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n var bBox = tt.getBBox();\n var boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n var _a = getAnchor(point),\n anchorX = _a.anchorX,\n anchorY = _a.anchorY;\n if (typeof anchorY === 'number') {\n var size = bBox.height + 1;\n var boxPosition = (positioner ?\n positioner.call(tooltip,\n boxWidth,\n size,\n point) :\n defaultPositioner(anchorX,\n anchorY,\n isHeader,\n boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX: anchorX,\n anchorY: anchorY,\n boxWidth: boxWidth,\n point: point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size: size,\n target: boxPosition.y,\n tt: tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some(function (box) {\n // Always realign if the beginning of a label is outside bounds\n var outside = tooltip.outside;\n var boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map(function (box) {\n var _a = defaultPositioner(box.anchorX,\n box.anchorY,\n box.point.isHeader,\n box.boxWidth,\n false),\n x = _a.x,\n y = _a.y;\n return extend(box, {\n target: y,\n x: x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n var boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n var x = box.x,\n boxWidth = box.boxWidth,\n isHeader = box.isHeader;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n var x = box.x,\n anchorX = box.anchorX,\n anchorY = box.anchorY,\n pos = box.pos,\n isHeader = box.point.isHeader;\n var attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x: x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip,\n but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: (pos || 0) + distributionBoxTop,\n anchorX: anchorX,\n anchorY: anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n var offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n var container = tooltip.container,\n outside = tooltip.outside,\n renderer = tooltip.renderer;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n var _f = tooltipLabel.getBBox(),\n width = _f.width,\n height = _f.height,\n x = _f.x,\n y = _f.y;\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n };\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n Tooltip.prototype.drawTracker = function () {\n var tooltip = this;\n if (!this.shouldStickOnContact()) {\n if (tooltip.tracker) {\n tooltip.tracker.destroy();\n }\n return;\n }\n var chart = tooltip.chart;\n var label = tooltip.label;\n var points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n var box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n var anchorPos = this.getAnchor(points);\n var labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n };\n /**\n * @private\n */\n Tooltip.prototype.styledModeFormat = function (formatString) {\n return formatString\n .replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex} ' +\n '{series.options.className} ' +\n '{point.options.className}\"');\n };\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n Tooltip.prototype.tooltipFooterHeaderFormatter = function (labelConfig, isFooter) {\n var series = labelConfig.series,\n tooltipOptions = series.tooltipOptions,\n xAxis = series.xAxis,\n dateTime = xAxis && xAxis.dateTime,\n e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n var xDateFormat = tooltipOptions.xDateFormat,\n formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n };\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n Tooltip.prototype.update = function (options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n };\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n Tooltip.prototype.updatePosition = function (point) {\n var _a = this,\n chart = _a.chart,\n distance = _a.distance,\n options = _a.options,\n pointer = chart.pointer,\n label = this.getLabel(), \n // Needed for outside: true (#11688)\n _b = pointer.getChartPosition(),\n left = _b.left,\n top = _b.top,\n scaleX = _b.scaleX,\n scaleY = _b.scaleY,\n pos = (options.positioner || this.getPosition).call(this,\n label.width,\n label.height,\n point);\n var anchorX = (point.plotX || 0) + chart.plotLeft,\n anchorY = (point.plotY || 0) + chart.plotTop,\n pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n // Corrects positions, occurs with tooltip positioner (#16944)\n if (options.positioner) {\n pos.x += left - distance;\n pos.y += top - distance;\n }\n pad = options.borderWidth + 2 * distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (scaleX !== 1 || scaleY !== 1) {\n css(this.container, {\n transform: \"scale(\".concat(scaleX, \", \").concat(scaleY, \")\")\n });\n anchorX *= scaleX;\n anchorY *= scaleY;\n }\n anchorX += left - pos.x;\n anchorY += top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n };\n return Tooltip;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * Configuration for the tooltip formatters.\n *\n * @interface Highcharts.TooltipFormatterContextObject\n * @extends Highcharts.PointLabelObject\n */ /**\n * Array of points in shared tooltips.\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array|undefined}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var format = F.format;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n syncTimeout = U.syncTimeout,\n removeEvent = U.removeEvent,\n uniqueKey = U.uniqueKey;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n var Point = /** @class */ (function () {\n function Point() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {number|string}\n */\n this.category = void 0;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series or pies.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The attributes of the rendered SVG shape like in `column` or `pie`\n * series.\n *\n * @readonly\n * @name Highcharts.Point#shapeArgs\n * @type {Readonly|undefined}\n */\n this.shapeArgs = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n Point.prototype.animateBeforeDestroy = function () {\n var point = this,\n animateParams = { x: point.startXPos,\n opacity: 0 },\n graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n var isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n };\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n Point.prototype.applyOptions = function (options, x) {\n var point = this,\n series = point.series,\n pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = this.isValid && !this.isValid();\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n };\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n Point.prototype.destroy = function () {\n var point = this,\n series = point.series,\n chart = series.chart,\n dataSorting = series.options.dataSorting,\n hoverPoints = chart.hoverPoints,\n globalAnimation = point.series.chart.renderer.globalAnimation,\n animation = animObject(globalAnimation);\n var prop;\n /**\n * Allow to call after animation.\n * @private\n */\n function destroyPoint() {\n // Remove all events and elements\n if (point.graphic ||\n point.graphics ||\n point.dataLabel ||\n point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (prop in point) { // eslint-disable-line guard-for-in\n point[prop] = null;\n }\n }\n if (point.legendItem) {\n // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n };\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary} [kinds]\n */\n Point.prototype.destroyElements = function (kinds) {\n var point = this,\n props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item && item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n };\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n Point.prototype.firePointEvent = function (eventType, eventArgs, defaultFunction) {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n };\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n Point.prototype.getClassName = function () {\n var point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n };\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n Point.prototype.getGraphicalProps = function (kinds) {\n var point = this,\n props = [],\n graphicalProps = { singular: [],\n plural: [] };\n var prop,\n i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic', 'shadowGroup');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n [\n 'graphic',\n 'dataLabel',\n 'connector'\n ].forEach(function (prop) {\n var plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n };\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n Point.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n Point.prototype.getNestedProperty = function (key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n };\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n Point.prototype.getZone = function () {\n var series = this.series,\n zones = series.zones,\n zoneAxis = series.zoneAxis || 'y';\n var zone,\n i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n };\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n Point.prototype.hasNewShapeType = function () {\n var point = this;\n var oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n };\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n Point.prototype.init = function (series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n };\n /**\n * Determine if point is valid.\n * @private\n * @function Highcharts.Point#isValid\n */\n Point.prototype.isValid = function () {\n return this.x !== null && isNumber(this.y);\n };\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n Point.prototype.optionsToObject = function (options) {\n var series = this.series,\n keys = series.options.keys,\n pointArrayMap = keys || series.pointArrayMap || ['y'],\n valueCount = pointArrayMap.length;\n var ret = {},\n firstItemType,\n i = 0,\n j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n };\n /**\n * Get the pixel position of the point relative to the plot area.\n * @private\n * @function Highcharts.Point#pos\n */\n Point.prototype.pos = function (chartCoordinates, plotY) {\n if (plotY === void 0) { plotY = this.plotY; }\n var _a = this,\n plotX = _a.plotX,\n series = _a.series,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var posX = 0,\n posY = 0;\n if (isNumber(plotX) && isNumber(plotY)) {\n if (chartCoordinates) {\n posX = xAxis ? xAxis.pos : chart.plotLeft;\n posY = yAxis ? yAxis.pos : chart.plotTop;\n }\n return chart.inverted && xAxis && yAxis ?\n [yAxis.len - plotY + posY, xAxis.len - plotX + posX] :\n [plotX + posX, plotY + posY];\n }\n };\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n Point.prototype.resolveColor = function () {\n var series = this.series,\n optionsChart = series.chart.options.chart,\n styledMode = series.chart.styledMode;\n var color,\n colors,\n colorCount = optionsChart.colorCount,\n colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number|undefined}\n */\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n };\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n Point.prototype.setNestedProperty = function (object, value, key) {\n var nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n var isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n };\n Point.prototype.shouldDraw = function () {\n return !this.isNull;\n };\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n Point.prototype.tooltipFormatter = function (pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n var series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n };\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n Point.prototype.update = function (options, redraw, animation, runEvent) {\n var point = this,\n series = point.series,\n graphic = point.graphic,\n chart = series.chart,\n seriesOptions = series.options;\n var i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle mock graphic elements for a11y, #12718\n var hasMockGraphic = graphic && point.hasMockGraphic;\n var shouldDestroyGraphic = point.y === null ?\n !hasMockGraphic :\n hasMockGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasMockGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n };\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n Point.prototype.remove = function (redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n };\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n Point.prototype.select = function (selected, accumulate) {\n var point = this,\n series = point.series,\n chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n var loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n };\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n Point.prototype.onMouseOver = function (e) {\n var point = this,\n series = point.series,\n chart = series.chart,\n pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n };\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n Point.prototype.onMouseOut = function () {\n var point = this,\n chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n };\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n Point.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var point_1 = this,\n options = merge(point_1.series.options.point,\n point_1.options),\n events = options.events;\n point_1.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point_1, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n };\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n Point.prototype.setState = function (state, move) {\n var point = this,\n series = point.series,\n previousState = point.state,\n stateOptions = (series.options.states[state || 'normal'] ||\n {}),\n markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker),\n normalDisabled = (markerOptions && markerOptions.enabled === false),\n markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}),\n stateDisabled = markerStateOptions.enabled === false,\n pointMarker = point.marker || {},\n chart = series.chart,\n hasMarkers = (markerOptions && series.markerAttribs);\n var halo = series.halo,\n markerAttribs,\n pointAttribs,\n pointAttribsAnimation,\n stateMarkerGraphic = series.stateMarkerGraphic,\n newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from mocked null points (#14966)\n if (point.graphic && !point.hasMockGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n var opacity_1 = pointAttribs.opacity;\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints && isNumber(opacity_1)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label &&\n !label.hasClass('highcharts-data-label-hidden')) {\n label.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n var haloOptions = stateOptions.halo;\n var markerGraphic = (point.graphic || stateMarkerGraphic);\n var markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state: state });\n };\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n Point.prototype.haloPath = function (size) {\n var pos = this.pos();\n return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];\n };\n return Point;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|null|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Tooltip.js'], _modules['Core/Utilities.js']], function (Color, H, Tooltip, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var charts = H.charts,\n noop = H.noop;\n var addEvent = U.addEvent,\n attr = U.attr,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n isObject = U.isObject,\n objectEach = U.objectEach,\n offset = U.offset,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * associated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n var Pointer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Pointer(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array} points\n * Currently hovered points\n */\n Pointer.prototype.applyInactiveState = function (points) {\n var activeSeries = [],\n series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n };\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n Pointer.prototype.destroy = function () {\n var pointer = this;\n this.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n };\n /**\n * Calculate attrs for selection marker.\n * @private\n * @function Highcharts.Pointer#getSelectionMarkerAttrs\n * @emits getSelectionMarkerAttrs\n */\n Pointer.prototype.getSelectionMarkerAttrs = function (chartX, chartY) {\n var _this = this;\n var e = {\n args: { chartX: chartX,\n chartY: chartY },\n attrs: {},\n shapeType: 'rect'\n };\n fireEvent(this, 'getSelectionMarkerAttrs', e, function (e) {\n var _a = _this,\n chart = _a.chart,\n _b = _a.mouseDownX,\n mouseDownX = _b === void 0 ? 0 : _b,\n _c = _a.mouseDownY,\n mouseDownY = _c === void 0 ? 0 : _c,\n zoomHor = _a.zoomHor,\n zoomVert = _a.zoomVert,\n attrs = e.attrs;\n var size;\n attrs.x = chart.plotLeft;\n attrs.y = chart.plotTop;\n attrs.width = zoomHor ? 1 : chart.plotWidth;\n attrs.height = zoomVert ? 1 : chart.plotHeight;\n // Adjust the width of the selection marker\n if (zoomHor) {\n size = chartX - mouseDownX;\n attrs.width = Math.abs(size);\n attrs.x = (size > 0 ? 0 : size) + mouseDownX;\n }\n // Adjust the height of the selection marker\n if (zoomVert) {\n size = chartY - mouseDownY;\n attrs.height = Math.abs(size);\n attrs.y = (size > 0 ? 0 : size) + mouseDownY;\n }\n });\n return e;\n };\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n Pointer.prototype.drag = function (e) {\n var chart = this.chart,\n chartOptions = chart.options.chart,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning,\n panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n var chartX = e.chartX,\n chartY = e.chartY,\n clickedInside,\n selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to coordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n var _a = this.getSelectionMarkerAttrs(chartX,\n chartY),\n shapeType = _a.shapeType,\n attrs = _a.attrs;\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer[shapeType]();\n selectionMarker\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: chartOptions.selectionMarkerFill ||\n color(\"#335cad\" /* Palette.highlightColor80 */)\n .setOpacity(0.25).get()\n });\n }\n }\n }\n if (selectionMarker) {\n selectionMarker.attr(attrs);\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n };\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n Pointer.prototype.dragStart = function (e) {\n var chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n };\n /**\n * Get selection box to calculate extremes\n * @private\n * @function Highcharts.Pointer#getSelectionBox\n * @emits getSelectionBox\n */\n Pointer.prototype.getSelectionBox = function (marker) {\n var e = {\n args: { marker: marker },\n result: {}\n };\n fireEvent(this, 'getSelectionBox', e, function (e) {\n e.result = {\n x: marker.attr ? +marker.attr('x') : marker.x,\n y: marker.attr ? +marker.attr('y') : marker.y,\n width: marker.attr ? marker.attr('width') : marker.width,\n height: marker.attr ? marker.attr('height') : marker.height\n };\n });\n return e.result;\n };\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n Pointer.prototype.drop = function (e) {\n var pointer = this,\n chart = this.chart,\n hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n var _a = this.getSelectionBox(this.selectionMarker),\n x_1 = _a.x,\n y_1 = _a.y,\n width_1 = _a.width,\n height_1 = _a.height;\n var selectionData_1 = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x: x_1,\n y: y_1,\n width: width_1,\n height: height_1\n }, \n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n runZoom_1 = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x_1) &&\n isNumber(y_1) &&\n isNumber(width_1) &&\n isNumber(height_1)) { // #859, #3569\n var horiz = axis.horiz,\n minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x_1 : y_1) + minPixelPadding),\n selectionMax = axis.toValue((horiz ? x_1 + width_1 : y_1 + height_1) -\n minPixelPadding);\n selectionData_1[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom_1 = true;\n }\n });\n if (runZoom_1) {\n fireEvent(chart, 'selection', selectionData_1, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n };\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n Pointer.prototype.findNearestKDPoint = function (series, shared, e) {\n var closest;\n /** @private */\n function sort(p1, p2) {\n var isCloserX = p1.distX - p2.distX,\n isCloser = p1.dist - p2.dist,\n isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n var result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n var noSharedTooltip = s.noSharedTooltip && shared,\n compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0),\n point = s.searchPoint(e,\n compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n };\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n Pointer.prototype.getChartCoordinatesFromPoint = function (point, inverted) {\n var series = point.series,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n var x = pick(point.clientX,\n point.plotX);\n var y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n };\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n Pointer.prototype.getChartPosition = function () {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n var container = this.chart.container;\n var pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n var offsetWidth = container.offsetWidth;\n var offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n };\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n Pointer.prototype.getCoordinates = function (e) {\n var coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n };\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currently being hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently being hovered.\n *\n * @param {Array} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n Pointer.prototype.getHoverData = function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n var hoverPoints = [],\n useExisting = !!(isDirectTouch && existingHoverPoint),\n filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking,\n true));\n };\n var hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n var notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter(function (s) { return s.stickyTracking &&\n (eventArgs.filter || filter)(s); });\n // Use existing hovered point or find the one closest to coordinates.\n var hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries,\n shared,\n e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n var point = find(s.points,\n function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.boosted && s.boost) {\n point = s.boost.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n };\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n Pointer.prototype.getPointFromEvent = function (e) {\n var target = e.target,\n point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n };\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n Pointer.prototype.onTrackerMouseOut = function (e) {\n var chart = this.chart;\n var relatedTarget = e.relatedTarget || e.toElement;\n var series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n };\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specific class name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n Pointer.prototype.inClass = function (element, className) {\n var elem = element,\n elemClassName;\n while (elem) {\n elemClassName = attr(elem, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n elem = elem.parentElement;\n }\n };\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n Pointer.prototype.init = function (chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n if (Tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, options.tooltip);\n }\n this.setDOMEvents();\n };\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * On map charts, the properties `lon` and `lat` are added to the event\n * object given that the chart has projection information.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n Pointer.prototype.normalize = function (e, chartPosition) {\n var touches = e.touches;\n // iOS (#2757)\n var ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches,\n e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n var chartX = ePos.pageX - chartPosition.left,\n chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n Pointer.prototype.onContainerClick = function (e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var pEvt = this.normalize(e);\n var plotLeft = chart.plotLeft;\n var plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n Pointer.prototype.onContainerMouseDown = function (e) {\n var isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n // Normalize before the 'if' for the legacy IE (#7850)\n e = this.normalize(e);\n // #11635, Firefox does not reliable fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button (incl. IE 8 support)\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n };\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n Pointer.prototype.onContainerMouseLeave = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n var tooltip = this.chart.tooltip;\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n (e.relatedTarget || e.toElement)) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n // #11635, Firefox wheel scroll does not fire out events consistently\n if (tooltip && !tooltip.isHidden) {\n this.reset();\n }\n };\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n Pointer.prototype.onContainerMouseEnter = function (e) {\n delete this.chartPosition;\n };\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n Pointer.prototype.onContainerMouseMove = function (e) {\n var chart = this.chart,\n tooltip = chart.tooltip,\n pEvt = this.normalize(e);\n this.setHoverChartIndex();\n // In IE8 we apparently need this returnValue set to false in order to\n // avoid text being selected. But in Chrome, e.returnValue is prevented,\n // plus we don't need to run e.preventDefault to prevent selected text\n // in modern browsers. So we set it conditionally. Remove it when IE8 is\n // no longer needed. #2251, #3224.\n if (!pEvt.preventDefault) {\n pEvt.returnValue = false;\n }\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n })) &&\n // If the tooltip has stickOnContact enabled, do nothing. This\n // applies regardless of any combinations of the `split` and\n // `useHTML` options.\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n Pointer.prototype.onDocumentTouchEnd = function (e) {\n var hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n Pointer.prototype.onContainerTouchMove = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n Pointer.prototype.onContainerTouchStart = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n };\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n Pointer.prototype.onDocumentMouseMove = function (e) {\n var chart = this.chart;\n var tooltip = chart.tooltip;\n var chartPosition = this.chartPosition;\n var pEvt = this.normalize(e,\n chartPosition);\n // If we're outside, hide the tooltip\n if (chartPosition &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt)) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n Pointer.prototype.onDocumentMouseUp = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n };\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n Pointer.prototype.pinch = function (e) {\n var self = this,\n chart = self.chart,\n pinchDown = self.pinchDown,\n touches = (e.touches || []),\n touchesLength = touches.length,\n lastValidTouch = self.lastValidTouch,\n hasZoom = self.hasZoom,\n transform = {},\n fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick),\n clip = {},\n tooltip = self.chart.tooltip,\n followTouchMove = touchesLength === 1 &&\n pick((tooltip && tooltip.options.followTouchMove),\n true);\n var selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n var bounds = chart.bounds[axis.horiz ? 'h' : 'v'],\n minPixelPadding = axis.minPixelPadding,\n min = axis.toPixels(Math.min(pick(axis.options.min,\n axis.dataMin),\n axis.dataMin)),\n max = axis.toPixels(Math.max(pick(axis.options.max,\n axis.dataMax),\n axis.dataMax)),\n absMin = Math.min(min,\n max),\n absMax = Math.max(min,\n max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (followTouchMove) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, function () {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n };\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n Pointer.prototype.pinchTranslate = function (pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n };\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n Pointer.prototype.pinchTranslateDirection = function (horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n var chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n var selectionWH,\n selectionXY,\n clipXY,\n scale = forcedScale || 1,\n touch0Now = touches[0][sChartXY],\n touch1Now = !singleTouch && touches[1][sChartXY],\n outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n var scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n var transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n };\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n Pointer.prototype.reset = function (allowMove, delay) {\n var pointer = this,\n chart = pointer.chart,\n hoverSeries = chart.hoverSeries,\n hoverPoint = chart.hoverPoint,\n hoverPoints = chart.hoverPoints,\n tooltip = chart.tooltip,\n tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n };\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n Pointer.prototype.runPointActions = function (e, p, force) {\n var pointer = this,\n chart = pointer.chart,\n series = chart.series,\n tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0),\n shared = (tooltip ?\n tooltip.shared :\n false);\n var hoverPoint = p || chart.hoverPoint,\n hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n var // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)),\n hoverData = this.getHoverData(hoverPoint,\n hoverSeries,\n series,\n isDirectTouch,\n shared,\n e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n var points = hoverData.hoverPoints,\n followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split,\n useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n (force ||\n hoverPoint !== chart.hoverPoint ||\n (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver', void 0, function () {\n // Draw tooltip if necessary\n if (tooltip && hoverPoint) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n });\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n var anchor = tooltip.getAnchor([{}],\n e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n var chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n var snap = pick((axis.crosshair || {}).snap,\n true);\n var point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, function (p) {\n return p.series && p.series[axis.coll] === axis;\n });\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n };\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n Pointer.prototype.scaleGroups = function (attribs, clip) {\n var chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n var seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n };\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n Pointer.prototype.setDOMEvents = function () {\n var _this = this;\n var container = this.chart.container,\n ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n var parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', function () {\n delete _this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n };\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n Pointer.prototype.setHoverChartIndex = function () {\n var chart = this.chart;\n var hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: chart.container });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n };\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n Pointer.prototype.touch = function (e, start) {\n var chart = this.chart;\n var hasMoved,\n pinchDown,\n isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n };\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n Pointer.prototype.touchSelect = function (e) {\n return Boolean(this.chart.options.chart.zooming.singleTouch &&\n e.touches &&\n e.touches.length === 1);\n };\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n Pointer.prototype.zoomOption = function (e) {\n var chart = this.chart,\n options = chart.options.chart,\n inverted = chart.inverted;\n var zoomType = options.zooming.type || '',\n zoomX,\n zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.zooming.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n };\n return Pointer;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * The selected Axis.\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * The related browser event.\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * Indicates a reset event to restore default state.\n * @name Highcharts.SelectEventObject#resetSelection\n * @type {boolean|undefined}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/MSPointer.js', [_modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var charts = H.charts,\n doc = H.doc,\n noop = H.noop,\n win = H.win;\n var addEvent = U.addEvent,\n css = U.css,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n // The touches object keeps track of the points being touched at all times\n var touches = {};\n var hasPointerEvent = !!win.PointerEvent;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function getWebkitTouches() {\n var fake = [];\n fake.item = function (i) {\n return this[i];\n };\n objectEach(touches, function (touch) {\n fake.push({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n });\n });\n return fake;\n }\n /** @private */\n function translateMSPointer(e, method, wktype, func) {\n var chart = charts[Pointer.hoverChartIndex || NaN];\n if ((e.pointerType === 'touch' ||\n e.pointerType === e.MSPOINTER_TYPE_TOUCH) && chart) {\n var p = chart.pointer;\n func(e);\n p[method]({\n type: wktype,\n target: e.currentTarget,\n preventDefault: noop,\n touches: getWebkitTouches()\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /** @private */\n var MSPointer = /** @class */ (function (_super) {\n __extends(MSPointer, _super);\n function MSPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n MSPointer.isRequired = function () {\n return !!(!H.hasTouch && (win.PointerEvent || win.MSPointerEvent));\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add or remove the MS Pointer specific events\n * @private\n * @function Highcharts.Pointer#batchMSEvents\n */\n MSPointer.prototype.batchMSEvents = function (fn) {\n fn(this.chart.container, hasPointerEvent ? 'pointerdown' : 'MSPointerDown', this.onContainerPointerDown);\n fn(this.chart.container, hasPointerEvent ? 'pointermove' : 'MSPointerMove', this.onContainerPointerMove);\n fn(doc, hasPointerEvent ? 'pointerup' : 'MSPointerUp', this.onDocumentPointerUp);\n };\n // Destroy MS events also\n MSPointer.prototype.destroy = function () {\n this.batchMSEvents(removeEvent);\n _super.prototype.destroy.call(this);\n };\n // Disable default IE actions for pinch and such on chart element\n MSPointer.prototype.init = function (chart, options) {\n _super.prototype.init.call(this, chart, options);\n if (this.hasZoom) { // #4014\n css(chart.container, {\n '-ms-touch-action': 'none',\n 'touch-action': 'none'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerDown\n */\n MSPointer.prototype.onContainerPointerDown = function (e) {\n translateMSPointer(e, 'onContainerTouchStart', 'touchstart', function (e) {\n touches[e.pointerId] = {\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.currentTarget\n };\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerMove\n */\n MSPointer.prototype.onContainerPointerMove = function (e) {\n translateMSPointer(e, 'onContainerTouchMove', 'touchmove', function (e) {\n touches[e.pointerId] = ({ pageX: e.pageX, pageY: e.pageY });\n if (!touches[e.pointerId].target) {\n touches[e.pointerId].target = e.currentTarget;\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentPointerUp\n */\n MSPointer.prototype.onDocumentPointerUp = function (e) {\n translateMSPointer(e, 'onDocumentTouchEnd', 'touchend', function (e) {\n delete touches[e.pointerId];\n });\n };\n // Add IE specific touch events to chart\n MSPointer.prototype.setDOMEvents = function () {\n var tooltip = this.chart.tooltip;\n _super.prototype.setDOMEvents.call(this);\n if (this.hasZoom ||\n pick((tooltip && tooltip.options.followTouchMove), true)) {\n this.batchMSEvents(addEvent);\n }\n };\n return MSPointer;\n }(Pointer));\n /* *\n *\n * Default Export\n *\n * */\n\n return MSPointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var format = F.format;\n var isFirefox = H.isFirefox,\n marginNames = H.marginNames,\n win = H.win;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n stableSort = U.stableSort,\n syncTimeout = U.syncTimeout,\n wrap = U.wrap;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n var Legend = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Legend(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = void 0;\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n Legend.prototype.init = function (chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n if (this.proximate) {\n this.unchartrender = addEvent(this.chart, 'render', function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n });\n }\n else if (this.unchartrender) {\n this.unchartrender();\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n Legend.prototype.setOptions = function (options) {\n var padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop || 0;\n this.itemMarginBottom = options.itemMarginBottom || 0;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n };\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n Legend.prototype.update = function (options, redraw) {\n var chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n };\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n Legend.prototype.colorizeItem = function (item, visible) {\n var _a = item.legendItem || {},\n group = _a.group,\n label = _a.label,\n line = _a.line,\n symbol = _a.symbol;\n if (group) {\n group[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n }\n if (!this.chart.styledMode) {\n var legend = this,\n options = legend.options,\n hiddenColor = legend.itemHiddenStyle.color,\n textColor = visible ?\n options.itemStyle.color :\n hiddenColor,\n symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor,\n markerOptions = item.options && item.options.marker;\n var symbolAttr = { fill: symbolColor };\n if (label) {\n label.css({\n fill: textColor,\n color: textColor // #1553, oldIE\n });\n }\n if (line) {\n line.attr({ stroke: symbolColor });\n }\n if (symbol) {\n // Apply marker options\n if (markerOptions && symbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n symbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item: item, visible: visible });\n };\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n Legend.prototype.positionItems = function () {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n };\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n Legend.prototype.positionItem = function (item) {\n var _this = this;\n var legend = this,\n _a = item.legendItem || {},\n group = _a.group,\n _b = _a.x,\n x = _b === void 0 ? 0 : _b,\n _c = _a.y,\n y = _c === void 0 ? 0 : _c,\n options = legend.options,\n symbolPadding = options.symbolPadding,\n ltr = !options.rtl,\n checkbox = item.checkbox;\n if (group && group.element) {\n var attribs = {\n translateX: ltr ?\n x :\n legend.legendWidth - x - 2 * symbolPadding - 4,\n translateY: y\n };\n var complete = function () {\n fireEvent(_this, 'afterPositionItem', { item: item });\n };\n group[defined(group.translateY) ? 'animate' : 'attr'](attribs, void 0, complete);\n }\n if (checkbox) {\n checkbox.x = x;\n checkbox.y = y;\n }\n };\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n Legend.prototype.destroyItem = function (item) {\n var checkbox = item.checkbox,\n legendItem = item.legendItem || {};\n // destroy SVG elements\n for (var _i = 0, _a = ['group', 'label', 'line', 'symbol']; _i < _a.length; _i++) {\n var key = _a[_i];\n if (legendItem[key]) {\n legendItem[key] = legendItem[key].destroy();\n }\n }\n if (checkbox) {\n discardElement(checkbox);\n }\n item.legendItem = void 0;\n };\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n Legend.prototype.destroy = function () {\n var legend = this;\n // Destroy items\n for (var _i = 0, _a = this.getAllItems(); _i < _a.length; _i++) {\n var item = _a[_i];\n this.destroyItem(item);\n }\n // Destroy legend elements\n for (var _b = 0, _c = [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (legend[key]) {\n legend[key] = legend[key].destroy();\n }\n }\n this.display = null; // Reset in .render on update.\n };\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n Legend.prototype.positionCheckboxes = function () {\n var alignAttr = this.group && this.group.alignAttr,\n clipHeight = this.clipHeight || this.legendHeight,\n titleHeight = this.titleHeight;\n var translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n var checkbox = item.checkbox;\n var top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n };\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n Legend.prototype.renderTitle = function () {\n var options = this.options,\n padding = this.padding,\n titleOptions = options.title;\n var bBox,\n titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, void 0, void 0, void 0, options.useHTML, void 0, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n };\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n Legend.prototype.setText = function (item) {\n var options = this.options;\n item.legendItem.label.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n };\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n Legend.prototype.renderItem = function (item) {\n var legend = this,\n legendItem = item.legendItem = item.legendItem || {},\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n horizontal = options.layout === 'horizontal',\n symbolWidth = legend.symbolWidth,\n symbolPadding = options.symbolPadding || 0,\n itemStyle = legend.itemStyle,\n itemHiddenStyle = legend.itemHiddenStyle,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n ltr = !options.rtl,\n isSeries = !item.series,\n series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item,\n seriesOptions = series.options,\n showCheckbox = (legend.createCheckboxForItem) &&\n seriesOptions &&\n seriesOptions.showCheckbox,\n useHTML = options.useHTML,\n itemClassName = item.options.className;\n var label = legendItem.label, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!label) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n legendItem.group = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n legendItem.label = label = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n label.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n label\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(legendItem.group);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(chart.styledMode ? 12 : itemStyle.fontSize, label);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n label.attr('y', legend.baseline);\n legend.symbolHeight =\n options.symbolHeight || legend.fontMetrics.f;\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n label.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, label, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n label.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n var bBox = label.getBBox();\n var fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n legendItem.labelWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(legendItem.labelHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n };\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n Legend.prototype.layoutItem = function (item) {\n var options = this.options,\n padding = this.padding,\n horizontal = options.layout === 'horizontal',\n itemHeight = item.itemHeight,\n itemMarginBottom = this.itemMarginBottom,\n itemMarginTop = this.itemMarginTop,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n maxLegendWidth = this.maxLegendWidth,\n itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth,\n legendItem = item.legendItem || {};\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n legendItem.x = this.itemX;\n legendItem.y = this.itemY;\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n };\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n Legend.prototype.getAllItems = function () {\n var allItems = [];\n this.chart.series.forEach(function (series) {\n var seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat((series.legendItem || {}).labels ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems: allItems });\n return allItems;\n };\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n Legend.prototype.getAlignment = function () {\n var options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n };\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array} margin\n * @param {Array} spacing\n */\n Legend.prototype.adjustMargins = function (margin, spacing) {\n var chart = this.chart,\n options = this.options,\n alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n Legend.prototype.proximatePositions = function () {\n var chart = this.chart,\n boxes = [],\n alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n var lastPoint,\n height,\n useFirstPoint = alignLeft,\n target,\n top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.label.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item: item\n });\n }\n }, this);\n var legendItem;\n for (var _i = 0, _a = distribute(boxes, chart.plotHeight); _i < _a.length; _i++) {\n var box = _a[_i];\n legendItem = box.item.legendItem || {};\n if (isNumber(box.pos)) {\n legendItem.y = chart.plotTop - chart.spacing[0] + box.pos;\n }\n }\n };\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n Legend.prototype.render = function () {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n var display,\n legendWidth,\n legendHeight,\n legendGroup = legend.group,\n allowedWidth,\n box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth = chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer\n .g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer\n .g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer\n .g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, function (a, b) {\n return ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0);\n });\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.placed ? 'animate' : 'attr'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n }\n // hide the border if no items\n legendGroup[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n };\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n Legend.prototype.align = function (alignTo) {\n if (alignTo === void 0) { alignTo = this.chart.spacingBox; }\n var chart = this.chart,\n options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n var y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y: y });\n }\n if (!chart.hasRendered) {\n // Avoid animation when adjusting alignment for responsiveness and\n // colorAxis label layout\n this.group.placed = false;\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n };\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n Legend.prototype.handleOverflow = function (legendHeight) {\n var legend = this,\n chart = this.chart,\n renderer = chart.renderer,\n options = this.options,\n optionsY = options.y,\n alignTop = options.verticalAlign === 'top',\n padding = this.padding,\n maxHeight = options.maxHeight,\n navOptions = options.navigation,\n animation = pick(navOptions.animation,\n true),\n arrowSize = navOptions.arrowSize || 12,\n pages = this.pages,\n allItems = this.allItems,\n clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n var clipHeight,\n lastY,\n legendItem,\n spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding),\n nav = this.nav,\n clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach(function (item, i) {\n legendItem = item.legendItem || {};\n var y = legendItem.y || 0,\n h = Math.round(legendItem.label.getBBox().height);\n var len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n legendItem.pageIx = len - 1;\n if (lastY) {\n (allItems[i - 1].legendItem || {}).pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed\n y + h - pages[len - 1] > clipHeight &&\n // and will fully fit inside a new page\n h <= clipHeight) {\n pages.push(y);\n legendItem.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode && navOptions.style) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n };\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation.\n *\n */\n Legend.prototype.scroll = function (scrollBy, animation) {\n var _this = this;\n var chart = this.chart,\n pages = this.pages,\n pageCount = pages.length,\n clipHeight = this.clipHeight,\n navOptions = this.options.navigation,\n pager = this.pager,\n padding = this.padding;\n var currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'inherit'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n var animOptions = animObject(pick(animation,\n chart.renderer.globalAnimation,\n true));\n syncTimeout(function () {\n fireEvent(_this, 'afterScroll', { currentPage: currentPage });\n }, animOptions.duration);\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendLabel\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n Legend.prototype.setItemEvents = function (item, legendLabel, useHTML) {\n var legend = this,\n legendItem = item.legendItem || {},\n boxWrapper = legend.chart.renderer.boxWrapper,\n isPoint = item instanceof Point,\n activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active',\n styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendElements = useHTML ?\n [legendLabel,\n legendItem.symbol] :\n [legendItem.group];\n var setOtherItemsState = function (state) {\n legend.allItems.forEach(function (otherItem) {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach(function (otherItem) {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n for (var _i = 0, legendElements_1 = legendElements; _i < legendElements_1.length; _i++) {\n var element = legendElements_1[_i];\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendLabel.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendLabel.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n var strLegendItemClick = 'legendItemClick',\n fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n Legend.prototype.createCheckboxForItem = function (item) {\n var legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n var target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n };\n return Legend;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.LegendItemObject\n */ /**\n * @name Highcharts.LegendItemObject#item\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#line\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#symbol\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Series color as used by the legend and some series types.\n * @name Highcharts.Series#color\n * @type {Highcharts.ColorType|undefined}\n */ /**\n * Legend data for the series.\n * @name Highcharts.Series#legendItem\n * @type {Highcharts.LegendItemObject|undefined}\n * @since 10.3.0\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var extendClass = U.extendClass,\n merge = U.merge;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, SeriesClass) {\n var defaultPlotOptions = defaultOptions.plotOptions || {},\n seriesOptions = SeriesClass.defaultOptions,\n seriesProto = SeriesClass.prototype;\n seriesProto.type = seriesType;\n if (!seriesProto.pointClass) {\n seriesProto.pointClass = Point;\n }\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = SeriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n var defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/Legend.js'], _modules['Core/MSPointer.js'], _modules['Core/Pointer.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, D, FormatUtilities, Foundation, H, Legend, MSPointer, Pointer, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var numberFormat = FormatUtilities.numberFormat;\n var registerEventOptions = Foundation.registerEventOptions;\n var charts = H.charts,\n doc = H.doc,\n marginNames = H.marginNames,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n attr = U.attr,\n cleanRecursively = U.cleanRecursively,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n var Chart = /** @class */ (function () {\n function Chart(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.legend = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n Chart.chart = function (a, b, c) {\n return new Chart(a, b, c);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.getArgs = function (a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n };\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.init = function (userOptions, callback) {\n // Handle regular options\n var userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n var options = merge(defaultOptions,\n userOptions); // do the merge\n var optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n var zooming = optionsChart.zooming = optionsChart.zooming || {};\n // Other options have no default so just pick\n if (userOptions.chart && !userOptions.chart.zooming) {\n zooming.resetButton = optionsChart.resetZoomButton;\n }\n zooming.key = pick(zooming.key, optionsChart.zoomKey);\n zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);\n zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);\n zooming.type = pick(zooming.type, optionsChart.zoomType);\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentational\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n var chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n };\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n Chart.prototype.initSeries = function (options) {\n var chart = this,\n optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType),\n SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n };\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n Chart.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n };\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n Chart.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n };\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n Chart.prototype.orderSeries = function (fromIndex) {\n var series = this.series;\n for (var i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n };\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n Chart.prototype.isInsidePlot = function (plotX, plotY, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var _b = this,\n inverted = _b.inverted,\n plotBox = _b.plotBox,\n plotLeft = _b.plotLeft,\n plotTop = _b.plotTop,\n scrollablePlotBox = _b.scrollablePlotBox;\n var scrollLeft = 0,\n scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n (_a = this.scrollingContainer, scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop);\n }\n var series = options.series,\n box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox,\n x = options.inverted ? plotY : plotX,\n y = options.inverted ? plotX : plotY,\n e = {\n x: x,\n y: y,\n isInsidePlot: true,\n options: options\n };\n if (!options.ignoreX) {\n var xAxis = (series &&\n (inverted && !this.polar ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n var chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n var yAxis = (options.axis && !options.axis.isXAxis && options.axis) || (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n var chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n };\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial} [animation]\n * If or how to apply animation to the redraw.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n Chart.prototype.redraw = function (animation) {\n fireEvent(this, 'beforeRedraw');\n var chart = this,\n axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [],\n series = chart.series,\n pointer = chart.pointer,\n legend = chart.legend,\n legendUserOptions = chart.userOptions.legend,\n renderer = chart.renderer,\n isHiddenChart = renderer.isHidden(),\n afterRedraw = [];\n var hasDirtyStacks,\n hasStackedSeries,\n i,\n isDirtyBox = chart.isDirtyBox,\n redrawLegend = chart.isDirtyLegend,\n serie;\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n var key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n };\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n Chart.prototype.get = function (id) {\n var series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n var ret = \n // Search axes\n find(this.axes,\n itemById) ||\n // Search series\n find(this.series,\n itemById);\n // Search points\n for (var i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n };\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n Chart.prototype.getAxes = function () {\n var chart = this,\n options = this.options,\n xAxisOptions = options.xAxis = splat(options.xAxis || {}),\n yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n var optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n };\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array}\n * The currently selected points.\n */\n Chart.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (acc, series) {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach(function (point) {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n };\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array}\n * The currently selected series.\n */\n Chart.prototype.getSelectedSeries = function () {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n };\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n Chart.prototype.setTitle = function (titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n };\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n Chart.prototype.applyDescription = function (name, explicitOptions) {\n var chart = this;\n // Default style\n var style = name === 'title' ? {\n color: \"#333333\" /* Palette.neutralColor80 */,\n fontSize: this.options.isStock ? '16px' : '18px' // #2944\n } : {\n color: \"#666666\" /* Palette.neutralColor60 */\n };\n // Merge default options with explicit options\n var options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style: style }),\n this.options[name],\n explicitOptions);\n var elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n var fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n };\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n Chart.prototype.layOutTitles = function (redraw) {\n var titleOffset = [0, 0, 0],\n renderer = this.renderer,\n spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n var title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n var titleSize,\n height;\n if (title) {\n if (!this.styledMode) {\n titleSize = (titleOptions.style &&\n titleOptions.style.fontSize);\n }\n titleSize = renderer.fontMetrics(titleSize, title).b;\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n titleSize :\n offset + titleSize,\n height: height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n var requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n };\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n Chart.prototype.getChartSize = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n widthOption = optionsChart.width,\n heightOption = optionsChart.height,\n renderTo = chart.renderTo;\n // Get inner width and height\n if (!defined(widthOption)) {\n chart.containerWidth = getStyle(renderTo, 'width');\n }\n if (!defined(heightOption)) {\n chart.containerHeight = getStyle(renderTo, 'height');\n }\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || chart.containerWidth || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (chart.containerHeight > 1 ?\n chart.containerHeight :\n 400));\n };\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n Chart.prototype.temporaryDisplay = function (revert) {\n var node = this.renderTo,\n tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n };\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n Chart.prototype.setClassName = function (className) {\n this.container.className = 'highcharts-container ' + (className || '');\n };\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n Chart.prototype.getContainer = function () {\n var chart = this,\n options = chart.options,\n optionsChart = options.chart,\n indexAttrName = 'data-highcharts-chart',\n containerId = uniqueKey();\n var containerStyle,\n renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n var oldChartIndex = pInt(attr(renderTo,\n indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n var chartWidth = chart.chartWidth;\n var chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n var container = createElement('div', {\n id: containerId\n },\n containerStyle,\n renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n var Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (var key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n };\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n Chart.prototype.getMargins = function (skipAxes) {\n var _a = this,\n spacing = _a.spacing,\n margin = _a.margin,\n titleOffset = _a.titleOffset;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n };\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n Chart.prototype.getAxisMargins = function () {\n var chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0],\n colorAxis = chart.colorAxis,\n margin = chart.margin,\n getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n };\n /**\n * Reflows the chart to its container. By default, the chart reflows\n * automatically to its container following a `window.resize` event, as per\n * the [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option. However, there are no reliable events for div resize, so if the\n * container is resized without a window resize event, this must be called\n * explicitly.\n *\n * @sample highcharts/members/chart-reflow/\n * Resize div and reflow\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n Chart.prototype.reflow = function (e) {\n var chart = this, optionsChart = chart.options.chart, renderTo = chart.renderTo, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), width = optionsChart.width || getStyle(renderTo, 'width'), height = optionsChart.height || getStyle(renderTo, 'height'), target = e ? e.target : win;\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in IE8 and\n // Opera, win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n width &&\n height &&\n (target === win || target === doc)) {\n if (width !== chart.containerWidth ||\n height !== chart.containerHeight) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerWidth = width;\n chart.containerHeight = height;\n }\n };\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n Chart.prototype.setReflow = function (reflow) {\n var chart = this;\n if (reflow !== false && !this.unbindReflow) {\n this.unbindReflow = addEvent(win, 'resize', function (e) {\n // a removed event listener still runs in Edge and IE if the\n // listener was removed while the event runs, so check if the\n // chart is not destroyed (#11609)\n if (chart.options) {\n chart.reflow(e);\n }\n });\n addEvent(this, 'destroy', this.unbindReflow);\n }\n else if (reflow === false && this.unbindReflow) {\n // Unbind and unset\n this.unbindReflow = this.unbindReflow();\n }\n // The following will add listeners to re-fit the chart before and after\n // printing (#2284). However it only works in WebKit. Should have worked\n // in Firefox, but not supported in IE.\n /*\n if (win.matchMedia) {\n win.matchMedia('print').addListener(function reflow() {\n chart.reflow();\n });\n }\n //*/\n };\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n Chart.prototype.setSize = function (width, height, animation) {\n var chart = this,\n renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n var globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n };\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n Chart.prototype.setChartSize = function (skipAxes) {\n var chart = this,\n inverted = chart.inverted,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n optionsChart = chart.options.chart,\n spacing = chart.spacing,\n clipOffset = chart.clipOffset;\n var plotLeft,\n plotTop,\n plotWidth,\n plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n var plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2),\n clipX = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[3]) / 2),\n clipY = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n };\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n Chart.prototype.resetMargins = function () {\n fireEvent(this, 'resetMargins');\n var chart = this,\n chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n var value = chartOptions[target],\n values = isObject(value) ? value : [value,\n value,\n value,\n value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n };\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n Chart.prototype.drawChartBox = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n styledMode = chart.styledMode,\n plotBGImage = chart.plotBGImage,\n chartBackgroundColor = optionsChart.backgroundColor,\n plotBackgroundColor = optionsChart.plotBackgroundColor,\n plotBackgroundImage = optionsChart.plotBackgroundImage,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotBox = chart.plotBox,\n clipRect = chart.clipRect,\n clipBox = chart.clipBox;\n var chartBackground = chart.chartBackground,\n plotBackground = chart.plotBackground,\n plotBorder = chart.plotBorder,\n chartBorderWidth,\n mgn,\n bgAttr,\n verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n };\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n Chart.prototype.propFromSeries = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n seriesOptions = chart.options.series;\n var i,\n klass,\n value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[(optionsChart.type || optionsChart.defaultSeriesType)];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n };\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n Chart.prototype.linkSeries = function () {\n var chart = this,\n chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n var linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries');\n };\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n Chart.prototype.renderSeries = function () {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n };\n /**\n * Render labels for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderLabels\n */\n Chart.prototype.renderLabels = function () {\n var chart = this,\n labels = chart.options.labels;\n if (labels.items) {\n labels.items.forEach(function (label) {\n var style = extend(labels.style,\n label.style),\n x = pInt(style.left) + chart.plotLeft,\n y = pInt(style.top) + chart.plotTop + 12;\n // delete to prevent rewriting in IE\n delete style.left;\n delete style.top;\n chart.renderer.text(label.html, x, y)\n .attr({ zIndex: 2 })\n .css(style)\n .add();\n });\n }\n };\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n Chart.prototype.render = function () {\n var chart = this,\n axes = chart.axes,\n colorAxis = chart.colorAxis,\n renderer = chart.renderer,\n options = chart.options,\n renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n var correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n /**\n * The overview of the chart's series.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n chart.legend = new Legend(chart, options.legend);\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n var tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n var tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n var redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n var redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .add();\n }\n chart.renderSeries();\n // Labels\n chart.renderLabels();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n };\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n Chart.prototype.addCredits = function (credits) {\n var chart = this,\n creds = merge(true,\n this.options.credits,\n credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n };\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n Chart.prototype.destroy = function () {\n var chart = this,\n axes = chart.axes,\n series = chart.series,\n container = chart.container,\n parentNode = container && container.parentNode;\n var i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n var prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n };\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n Chart.prototype.firstRender = function () {\n var chart = this,\n options = chart.options;\n // Hook for oldIE to check whether the chart is ready to render\n if (chart.isReadyToRender && !chart.isReadyToRender()) {\n return;\n }\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n // depends on inverted and on margins being set\n if (Pointer) {\n if (MSPointer.isRequired()) {\n chart.pointer = new MSPointer(chart, options);\n }\n else {\n /**\n * The Pointer that keeps track of mouse and touch interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n chart.pointer = new Pointer(chart, options);\n }\n }\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n };\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n Chart.prototype.onload = function () {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow(this.options.chart.reflow);\n }\n this.warnIfA11yModuleNotLoaded();\n // Don't run again\n this.hasLoaded = true;\n };\n /**\n * Emit console warning if the a11y module is not loaded.\n */\n Chart.prototype.warnIfA11yModuleNotLoaded = function () {\n var _a = this,\n options = _a.options,\n title = _a.title;\n if (options && !this.accessibility) {\n // Make chart behave as an image with the title as alt text\n this.renderer.boxWrapper.attr({\n role: 'img',\n 'aria-label': ((title && title.element.textContent) || ''\n // #17753, < is not allowed in SVG attributes\n ).replace(/} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n Chart.prototype.addSeries = function (options, redraw, animation) {\n var chart = this;\n var series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n };\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n Chart.prototype.addAxis = function (options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.addColorAxis = function (options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis | Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.createAxis = function (type, options) {\n var axis = new Axis(this,\n merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n };\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n Chart.prototype.showLoading = function (str) {\n var chart = this,\n options = chart.options,\n loadingOptions = options.loading,\n setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n var loadingDiv = chart.loadingDiv,\n loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n };\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n Chart.prototype.hideLoading = function () {\n var options = this.options,\n loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n };\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n Chart.prototype.update = function (options, redraw, oneToOne, animation) {\n var chart = this,\n adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n },\n isResponsiveOptions = options.isResponsiveOptions,\n itemsForRemoval = [];\n var updateAllAxes,\n updateAllSeries,\n runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n var optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('reflow' in optionsChart) {\n chart.setReflow(optionsChart.reflow);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n var indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n var hasId = defined(newOptions.id);\n var item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n var newWidth = optionsChart && optionsChart.width;\n var newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height,\n newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n };\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setSubtitle = function (options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n };\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setCaption = function (options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n };\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n Chart.prototype.showResetZoom = function () {\n var chart = this,\n lang = defaultOptions.lang,\n btnOptions = chart.options.chart.zooming.resetButton,\n theme = btnOptions.theme,\n alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n };\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n Chart.prototype.zoomOut = function () {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n };\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n Chart.prototype.zoom = function (event) {\n var chart = this,\n pointer = chart.pointer;\n var displayButton = false,\n hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n var axis = axisData.axis,\n isXAxis = axis.isXAxis;\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] &&\n (defined(pointer.mouseDownX) &&\n defined(pointer.mouseDownY) &&\n chart.isInsidePlot(pointer.mouseDownX - chart.plotLeft, pointer.mouseDownY - chart.plotTop, { axis: axis })) || !defined(chart.inverted ? pointer.mouseDownX : pointer.mouseDownY)) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n var resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n };\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n Chart.prototype.pan = function (e, panning) {\n var chart = this,\n hoverPoints = chart.hoverPoints,\n panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }),\n chartOptions = chart.options.chart;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n var type = panningOptions.type;\n var doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n var axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n var nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n var horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n var newMin = flipped ? panMax : panMin,\n newMax = flipped ? panMin : panMax,\n panningState = axis.panningState,\n spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n var processedData = series.getProcessedData(true),\n dataExtremes = series.getExtremes(processedData.yData,\n true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n var paddedMin = Math.min(pick(panningState && panningState.startMin,\n extremes.dataMin),\n halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n var paddedMax = Math.max(pick(panningState && panningState.startMax,\n extremes.dataMax),\n halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, function (pos, down) {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n };\n return Chart;\n }());\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n *\n * @private\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n * @private\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @private\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#axis\n * @type {Highcharts.Axis|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawLineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function drawLineMarker(legend) {\n var legendItem = this.legendItem = this.legendItem || {},\n options = this.options,\n symbolWidth = legend.symbolWidth,\n symbolHeight = legend.symbolHeight,\n generalRadius = symbolHeight / 2,\n renderer = this.chart.renderer,\n legendItemGroup = legendItem.group,\n verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n var attr = {},\n legendSymbol,\n markerOptions = options.marker,\n lineSizer = 0;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': Math.min(options.lineWidth || 0, 24)\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n else if (options.linecap !== 'square') {\n attr['stroke-linecap'] = 'round';\n }\n }\n legendItem.line = renderer\n .path()\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n if (attr['stroke-linecap']) {\n lineSizer = Math.min(legendItem.line.strokeWidth(), symbolWidth) / 2;\n }\n legendItem.line\n .attr({\n d: [\n ['M', lineSizer, verticalCenter],\n ['L', symbolWidth - lineSizer, verticalCenter]\n ]\n });\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n var radius = Math.min(pick(markerOptions.radius,\n generalRadius),\n generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n legendItem.symbol = legendSymbol = renderer\n .symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, extend({ context: 'legend' }, markerOptions))\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.drawLineMarker = drawLineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawRectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function drawRectangle(legend, item) {\n var legendItem = item.legendItem || {},\n options = legend.options,\n symbolHeight = legend.symbolHeight,\n square = options.squareSymbol,\n symbolWidth = square ? symbolHeight : legend.symbolWidth;\n legendItem.symbol = this.chart.renderer\n .rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n })\n .add(legendItem.group);\n }\n LegendSymbol.drawRectangle = drawRectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n var seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n *\n * @private\n */\n lineWidth: 2,\n /**\n * For some series, there is a limit that shuts down animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`. This option works if animation\n * is fired on individual points, not on a group of points like e.g. during\n * the initial animation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animationlimit/\n * Animation limit on updating individual points\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds. (Defaults to\n * `1000`)\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below. (Defaults to `easeInOutSine`)\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Highcharts.AnimationOptionsObject}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @ignore-option */\n duration: 1000\n },\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element. Changes to the series' color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so its\n * graphic representations are given the class name `highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @sample highcharts/series-line/linecap/\n * Line cap comparison\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line and scatter-like series. Properties\n * like `fillColor`, `lineColor` and `lineWidth` define the visual\n * appearance of the markers. The `symbol` option defines the shape. Other\n * series types, like column series, don't have markers, but have visual\n * options on the series level instead.\n *\n * In styled mode, the markers can be styled with the `.highcharts-point`,\n * `.highcharts-point-hover` and `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * Returning `false` cancels the default behavior, which is to show a\n * tooltip for the point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Styled mode example\n * @sample {highmaps} maps/demo/color-axis\n * Choropleth map with data labels\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Using data labels as map markers\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is displayed\n * for the `dataLabels`. The animation can also be set as a\n * configuration object. Please note that this option only applies to\n * the initial animation.\n *\n * For other animations, see [chart.animation](#chart.animation) and the\n * animation parameter under the API methods. The following properties\n * are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds. Set to `0` to render the\n * data labels immediately. As `undefined` inherits defer time from the\n * [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If `right`,\n * the right side of the label should be touching the point. For points\n * with an extent, like columns, the alignments also dictates how to\n * align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside) option. Can be one of\n * `left`, `center` or `right`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/series-datalabels-align-left/ Left\n * aligned\n * @sample {highcharts}\n * highcharts/plotoptions/bar-datalabels-align-inside-bar/ Data\n * labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label. Setting it to\n * `auto` will use the point's color.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Data labels as map markers\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Setting it to `auto` will use\n * the point's color. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n borderWidth: 0,\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * This options is deprecated.\n * Use [style.color](#plotOptions.series.dataLabels.style) instead.\n *\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @see [style.color](#plotOptions.series.dataLabels.style)\n *\n * @type {Highcharts.ColorType}\n * @deprecated 10.3\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n * If set to a number, a defer time is specified in milliseconds.\n *\n * @sample highcharts/plotoptions/animation-defer\n * Set defer time\n *\n * @since 4.0.0\n * @type {boolean|number}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points\n * i.e `heatmap` or `tilemap`. Does not work with series that don't\n * display null points, like `line`, `column`, `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullFormatter` can be applied only to series which support\n * displaying null points i.e `heatmap` or `tilemap`. Does not work\n * with series that don't display null points, like `line`, `column`,\n * `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The z index of the data labels. Use a `zIndex` of 6 to display it above\n * the series, or use a `zIndex` of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.zIndex\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 50\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states, symbol\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Custom colorKey with color axis stops\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var hasTouch = H.hasTouch,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n cleanRecursively = U.cleanRecursively,\n correctFloat = U.correctFloat,\n defined = U.defined,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n var Series = /** @class */ (function () {\n function Series() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n Series.prototype.init = function (chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n var series = this,\n chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n var options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n var events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n var lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n };\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n Series.prototype.is = function (type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n };\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n Series.prototype.insert = function (collection) {\n var indexOption = this.options.index;\n var i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n };\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n Series.prototype.bindAxes = function () {\n var series = this,\n seriesOptions = series.options,\n chart = series.chart;\n var axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n var index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n };\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n Series.prototype.updateParallelArrays = function (point, i) {\n var series = point.series,\n args = arguments,\n fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n var val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], Array.prototype.slice.call(args, 2));\n };\n series.parallelArrays.forEach(fn);\n };\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n Series.prototype.hasData = function () {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n };\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n Series.prototype.autoIncrement = function (x) {\n var options = this.options,\n pointIntervalUnit = options.pointIntervalUnit,\n relativeXValue = options.relativeXValue,\n time = this.chart.time;\n var xIncrement = this.xIncrement,\n date,\n pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n };\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n Series.prototype.setDataSortingOptions = function () {\n var options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n };\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n Series.prototype.setOptions = function (itemOptions) {\n var chart = this.chart,\n chartOptions = chart.options,\n plotOptions = chartOptions.plotOptions,\n userOptions = chart.userOptions || {},\n seriesUserOptions = merge(itemOptions),\n styledMode = chart.styledMode,\n e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n var zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n var typeOptions = e.plotOptions[this.type],\n userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n var options = merge(typeOptions,\n plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type],\n seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n var zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n };\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n Series.prototype.getName = function () {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n };\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n Series.prototype.getCyclic = function (prop, value, defaults) {\n var chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n var i,\n setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n };\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n Series.prototype.getColor = function () {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* Palette.neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n };\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n Series.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n Series.prototype.getSymbol = function () {\n var seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n Series.prototype.findPointIndex = function (optionsObject, fromIndex) {\n var id = optionsObject.id,\n x = optionsObject.x,\n oldData = this.points,\n dataSorting = this.options.dataSorting;\n var matchingPoint,\n matchedById,\n pointIndex;\n if (id) {\n var item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n var matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.index === optionsObject.index; };\n if (dataSorting && dataSorting.matchByName) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.name === optionsObject.name; };\n }\n else if (this.options.relativeXValue) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x; };\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n };\n /**\n * Internal function called from setData. If the point count is the same\n * as it was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n Series.prototype.updateData = function (data, animation) {\n var options = this.options,\n dataSorting = options.dataSorting,\n oldData = this.points,\n pointsToAdd = [],\n requireSorting = this.requireSorting,\n equalLength = data.length === oldData.length;\n var hasUpdatedByKey,\n i,\n point,\n lastIndex,\n succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n var optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this },\n pointOptions)) || {};\n var pointIndex;\n // Get the x of the new data point\n var x = optionsObject.x,\n id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && (oldData[i].update)) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n };\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n Series.prototype.setData = function (data, redraw, animation, updatePoints) {\n if (redraw === void 0) { redraw = true; }\n var series = this,\n oldData = series.points,\n oldDataLength = (oldData && oldData.length) || 0,\n options = series.options,\n chart = series.chart,\n dataSorting = options.dataSorting,\n xAxis = series.xAxis,\n turboThreshold = options.turboThreshold,\n xData = this.xData,\n yData = this.yData,\n pointArrayMap = series.pointArrayMap,\n valueCount = pointArrayMap && pointArrayMap.length,\n keys = options.keys;\n var i,\n pt,\n updatedData,\n indexOfX = 0,\n indexOfY = 1,\n firstPoint = null,\n copiedData;\n if (!chart.options.chart.allowMutatingData) { // #4259\n // Remove old reference\n if (options.data) {\n delete series.options.data;\n }\n if (series.userOptions.data) {\n delete series.userOptions.data;\n }\n copiedData = merge(true, data);\n }\n data = copiedData || data || [];\n var dataLength = data.length;\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (chart.options.chart.allowMutatingData &&\n updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.boosted) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n // stray commas in oldIE:\n if (typeof data[i] !== 'undefined') {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n if (oldData[i] && (oldData[i].destroy)) {\n oldData[i].destroy();\n }\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n };\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array} data\n * Force data grouping.\n */\n Series.prototype.sortData = function (data) {\n var series = this,\n options = series.options,\n dataSorting = options.dataSorting,\n sortKey = dataSorting.sortKey || 'y',\n getPointOptionsObject = function (series,\n pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n },\n pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n var sortedData = data.concat().sort(function (a,\n b) {\n var aValue = getNestedProperty(sortKey,\n a);\n var bValue = getNestedProperty(sortKey,\n b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n var options = linkedSeries.options,\n seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n };\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getProcessedData = function (forceExtremesFromAll) {\n var series = this,\n xAxis = series.xAxis,\n options = series.options,\n cropThreshold = options.cropThreshold,\n getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian,\n val2lin = xAxis && xAxis.val2lin,\n isLog = !!(xAxis && xAxis.logarithmic);\n var croppedData,\n cropped,\n cropStart = 0,\n distance,\n closestPointRange,\n i, // loop variable\n xExtremes,\n min,\n max, \n // copied during slice operation:\n processedXData = series.xData,\n processedYData = series.yData,\n throwOnUnsorted = series.requireSorting,\n updatingNames = false;\n var dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = !!(xAxis.categories && !xAxis.names.length);\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n };\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n Series.prototype.processData = function (force) {\n var series = this,\n xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n var processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n };\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n Series.prototype.cropData = function (xData, yData, min, max, cropShoulder) {\n var dataLength = xData.length;\n var i,\n j,\n cropStart = 0,\n cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n };\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n Series.prototype.generatePoints = function () {\n var series = this,\n options = series.options,\n dataOptions = (series.processedData || options.data),\n processedXData = series.processedXData,\n processedYData = series.processedYData,\n PointClass = series.pointClass,\n processedDataLength = processedXData.length,\n cropStart = series.cropStart || 0,\n hasGroupedData = series.hasGroupedData,\n keys = options.keys,\n points = [],\n groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n var dataLength,\n cursor,\n point,\n i,\n data = series.data;\n if (!data && !hasGroupedData) {\n var arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n };\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n Series.prototype.getXExtremes = function (xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n };\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getExtremes = function (yData, forceExtremesFromAll) {\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n xData = this.processedXData || this.xData,\n activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0,\n positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n var xExtremes,\n validValue,\n withinRange,\n x,\n y,\n i,\n j,\n xMin = 0,\n xMax = 0,\n activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n var yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n var dataExtremes = {\n activeYData: activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes: dataExtremes });\n return dataExtremes;\n };\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n Series.prototype.applyExtremes = function () {\n var dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n };\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array} data\n * Array of options for points\n */\n Series.prototype.getFirstValidPoint = function (data) {\n var dataLength = data.length;\n var i = 0,\n firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n };\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n Series.prototype.translate = function () {\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n var series = this,\n options = series.options,\n stacking = options.stacking,\n xAxis = series.xAxis,\n categories = xAxis.categories,\n enabledDataSorting = series.enabledDataSorting,\n yAxis = series.yAxis,\n points = series.points,\n dataLength = points.length,\n pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement),\n threshold = options.threshold,\n stackThreshold = options.startFromThreshold ? threshold : 0,\n zoneAxis = this.zoneAxis || 'y';\n var i,\n plotX,\n lastPlotX,\n stackIndicator,\n closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n var point = points[i],\n xValue = point.x;\n var pointStack = void 0,\n stackValues = void 0,\n yValue = point.y,\n yBottom = point.low;\n var stack = stacking && yAxis.stacking && yAxis.stacking.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey];\n if (yAxis.positiveValuesOnly &&\n !yAxis.validatePositiveValue(yValue) ||\n xAxis.positiveValuesOnly &&\n !xAxis.validatePositiveValue(xValue)) {\n point.isNull = true;\n }\n /**\n * The translated X value for the point in terms of pixels. Relative\n * to the X axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotX\n * @type {number|undefined}\n */\n point.plotX = plotX = correctFloat(// #5236\n // Get the plotX translation\n limitedRange(xAxis.translate(// #3923\n xValue, 0, 0, 0, 1, pointPlacement, this.type === 'flags')) // #3923\n );\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stack &&\n stack[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull && stackIndicator.key) {\n pointStack = stack[xValue];\n stackValues = pointStack.points[stackIndicator.key];\n }\n if (pointStack && isArray(stackValues)) {\n yBottom = stackValues[0];\n yValue = stackValues[1];\n if (yBottom === stackThreshold &&\n stackIndicator.key === stack[xValue].base) {\n yBottom = pick(isNumber(threshold) ? threshold : yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly &&\n defined(yBottom) &&\n yBottom <= 0) {\n yBottom = void 0;\n }\n point.total = point.stackTotal = pick(pointStack.total);\n point.percentage = defined(point.y) && pointStack.total ?\n (point.y / pointStack.total * 100) : void 0;\n point.stackY = yValue;\n // Place the stack label\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n pointStack.setOffset(series.pointXOffset || 0, series.barW || 0, void 0, void 0, void 0, series.xAxis);\n }\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(yBottom) ?\n limitedRange(yAxis.translate(yBottom, 0, 1, 0, 1)) :\n void 0;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws\n // #3201\n point.plotY = void 0;\n if (isNumber(yValue)) {\n var translated = yAxis.translate(yValue,\n false,\n true,\n false,\n true);\n if (typeof translated !== 'undefined') {\n /**\n * The translated Y value for the point in terms of pixels.\n * Relative to the Y axis position if the series has one,\n * otherwise relative to the plot area. Depending on the\n * series type this value might not be defined.\n * @name Highcharts.Point#plotY\n * @type {number|undefined}\n */\n point.plotY = limitedRange(translated);\n }\n }\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, 0, 0, 0, 1, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = pick(categories && categories[point.x], point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n };\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array}\n * The valid points.\n */\n Series.prototype.getValidPoints = function (points, insideOnly, allowNull) {\n var chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, { inverted: chart.inverted })) {\n return false;\n }\n return point.visible !== false &&\n (allowNull || !point.isNull);\n });\n };\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n Series.prototype.getClipBox = function () {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // If no axes on the series, use global clipBox\n var seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n };\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n Series.prototype.getSharedClipKey = function () {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n };\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n Series.prototype.setClip = function () {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n markerGroup = _a.markerGroup,\n sharedClips = chart.sharedClips,\n renderer = chart.renderer,\n clipBox = this.getClipBox(),\n sharedClipKey = this.getSharedClipKey(); // #4526\n var clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n };\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n Series.prototype.animate = function (init) {\n var _a = this, chart = _a.chart, group = _a.group, markerGroup = _a.markerGroup, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n var animationClipRect = chart.sharedClips[animationClipKey],\n markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n var clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n // The marker clip box. The number 99 is a safe margin to avoid\n // markers being clipped during animation.\n var markerClipBox = {\n x: inverted ? -99 : -99,\n y: inverted ? -99 : -99,\n width: inverted ? chart.plotWidth + 199 : 99,\n height: inverted ? 99 : chart.plotHeight + 199\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n var finalBox = this.getClipBox(),\n step_1 = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step_1) {\n step_1.apply(fx, arguments);\n }\n if (fx.prop === 'width' &&\n markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(inverted ? 'height' : 'width', val + 99);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n };\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n Series.prototype.afterAnimate = function () {\n var _this = this;\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, function (clip, key, sharedClips) {\n if (clip && !_this.chart.container.querySelector(\"[clip-path=\\\"url(#\".concat(clip.id, \")\\\"]\"))) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n };\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n Series.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n styledMode = chart.styledMode,\n colorAxis = series.colorAxis,\n options = series.options,\n seriesMarkerOptions = options.marker,\n markerGroup = series[series.specialGroup || 'markerGroup'],\n xAxis = series.xAxis,\n globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n var i,\n point,\n graphic,\n verb,\n pointMarkerOptions,\n hasPointMarker,\n markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n var shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n var symbol = pick(pointMarkerOptions.symbol,\n series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n var isInside = point.isInside !== false;\n if (!graphic &&\n isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * SVG graphic representing the point in the chart. In\n * some cases it may be a hidden graphic to improve\n * accessibility.\n *\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @see Highcharts.Point#graphics\n *\n * @name Highcharts.Point#graphic\n * @type {Highcharts.SVGElement|undefined}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic) {\n var pointAttr = series.pointAttribs(point, ((styledMode || !point.selected) ?\n void 0 :\n 'select'));\n if (!styledMode) {\n graphic[verb](pointAttr);\n }\n else if (colorAxis) { // #14114\n graphic['css']({\n fill: pointAttr.fill\n });\n }\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n };\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n Series.prototype.markerAttribs = function (point, state) {\n var seriesOptions = this.options,\n seriesMarkerOptions = seriesOptions.marker,\n pointMarkerOptions = point.marker || {},\n symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol),\n attribs = {};\n var seriesStateOptions,\n pointStateOptions,\n radius = pick(pointMarkerOptions.radius,\n seriesMarkerOptions && seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius && radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n var pos = point.pos();\n if (isNumber(radius) && pos) {\n attribs.x = pos[0] - radius;\n attribs.y = pos[1] - radius;\n if (seriesOptions.crisp) {\n // Math.floor for #1843:\n attribs.x = Math.floor(attribs.x);\n }\n }\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n };\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n Series.prototype.pointAttribs = function (point, state) {\n var seriesMarkerOptions = this.options.marker,\n pointOptions = point && point.options,\n pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}),\n pointColorOption = pointOptions && pointOptions.color,\n pointColor = point && point.color,\n zoneColor = point && point.zone && point.zone.color;\n var seriesStateOptions,\n pointStateOptions,\n color = this.color,\n fill,\n stroke,\n strokeWidth = pick(pointMarkerOptions.lineWidth,\n seriesMarkerOptions.lineWidth),\n opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n };\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n Series.prototype.destroy = function (keepEventsForUpdate) {\n var series = this,\n chart = series.chart,\n issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent),\n data = series.data || [];\n var destroy,\n i,\n point,\n axis;\n // add event hook\n fireEvent(series, 'destroy', { keepEventsForUpdate: keepEventsForUpdate });\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach(function (clip) { return clip.destroy(); });\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n };\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n Series.prototype.applyZones = function () {\n var series = this,\n chart = this.chart,\n renderer = chart.renderer,\n zones = this.zones,\n clips = (this.clips || []),\n graph = this.graph,\n area = this.area,\n plotSizeMax = Math.max(chart.plotWidth,\n chart.plotHeight),\n axis = this[(this.zoneAxis || 'y') + 'Axis'],\n inverted = chart.inverted;\n var translatedFrom,\n translatedTo,\n clipAttr,\n extremes,\n reversed,\n horiz,\n pxRange,\n pxPosMin,\n pxPosMax,\n zoneArea,\n zoneGraph,\n ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: plotSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: plotSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n // VML SUPPPORT\n if (inverted && renderer.isVML) {\n if (axis.isXAxis) {\n clipAttr = {\n x: 0,\n y: reversed ? pxPosMin : pxPosMax,\n height: clipAttr.width,\n width: chart.chartWidth\n };\n }\n else {\n clipAttr = {\n x: (clipAttr.y -\n chart.plotLeft -\n chart.spacingBox.x),\n y: 0,\n width: clipAttr.height,\n height: chart.chartHeight\n };\n }\n }\n // END OF VML SUPPORT\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show();\n }\n if (area) {\n area.show();\n }\n }\n };\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n Series.prototype.plotGroup = function (prop, name, visibility, zIndex, parent) {\n var group = this[prop];\n var isNew = !group,\n attrs = {\n visibility: visibility,\n zIndex: zIndex || 0.1 // IE8 and pointer logic use this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox(name));\n return group;\n };\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n Series.prototype.getPlotBox = function (name) {\n var horAxis = this.xAxis,\n vertAxis = this.yAxis;\n var chart = this.chart,\n inverted = (chart.inverted &&\n !chart.polar &&\n horAxis &&\n this.invertible !== false &&\n name === 'series');\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n horAxis = vertAxis;\n vertAxis = this.xAxis;\n }\n return {\n translateX: horAxis ? horAxis.left : chart.plotLeft,\n translateY: vertAxis ? vertAxis.top : chart.plotTop,\n rotation: inverted ? 90 : 0,\n rotationOriginX: inverted ?\n (horAxis.len - vertAxis.len) / 2 :\n 0,\n rotationOriginY: inverted ?\n (horAxis.len + vertAxis.len) / 2 :\n 0,\n scaleX: inverted ? -1 : 1,\n scaleY: 1\n };\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n Series.prototype.removeEvents = function (keepEventsForUpdate) {\n var series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n };\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n Series.prototype.render = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n animOptions = animObject(options.animation),\n visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex,\n hasRendered = series.hasRendered,\n chartSeriesGroup = chart.seriesGroup,\n inverted = chart.inverted;\n // Animation doesn't work in IE8 quirks when the group div is\n // hidden, and looks bad in other oldIE\n var animDuration = (!series.finishedAnimating && chart.renderer.isSVG) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n var group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n };\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n Series.prototype.redraw = function () {\n // Cache it here as it is set to false in render, but used after\n var wasDirty = this.isDirty || this.isDirtyData;\n this.translate();\n this.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n };\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n Series.prototype.searchPoint = function (e, compareX) {\n var series = this,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n };\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n Series.prototype.buildKDTree = function (e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n var series = this,\n dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n var length = points && points.length;\n var axis,\n median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n Series.prototype.searchKDTree = function (point, compareX, e) {\n var series = this,\n kdX = this.kdAxisArray[0],\n kdY = this.kdAxisArray[1],\n kdComparer = compareX ? 'distX' : 'dist',\n kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n var x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null,\n y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null,\n r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n var point = tree.point,\n axis = series.kdAxisArray[depth % dimensions];\n var nPoint1,\n nPoint2,\n ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n var tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide whether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n };\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n Series.prototype.pointPlacementToXValue = function () {\n var _a = this,\n _b = _a.options,\n pointPlacement = _b.pointPlacement,\n pointRange = _b.pointRange,\n axis = _a.xAxis;\n var factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n };\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n Series.prototype.isPointInside = function (point) {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n };\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n Series.prototype.drawTracker = function () {\n var series = this,\n options = series.options,\n trackByArea = options.trackByArea,\n trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart,\n pointer = chart.pointer,\n renderer = chart.renderer,\n snap = chart.options.tooltip.snap,\n tracker = series.tracker,\n onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE6: 0.002\n * IE7: 0.002\n * IE8: 0.002\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n var i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'inherit' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n Series.prototype.addPoint = function (options, redraw, shift, animation, withEvent) {\n var series = this,\n seriesOptions = series.options,\n data = series.data,\n chart = series.chart,\n xAxis = series.xAxis,\n names = xAxis && xAxis.hasNames && xAxis.names,\n dataOptions = seriesOptions.data,\n xData = series.xData;\n var isInTheMiddle,\n i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n var point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n var x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', i, 0, 0);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle ||\n // When processedData is present we need to splice an empty slot\n // into series.data, otherwise generatePoints won't pick it up.\n series.processedData) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && (data[0].remove)) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n };\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n Series.prototype.removePoint = function (i, redraw, animation) {\n var series = this,\n data = series.data,\n point = data[i],\n points = series.points,\n chart = series.chart,\n remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', i, 1);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n Series.prototype.remove = function (redraw, animation, withEvent, keepEvents) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries();\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n Series.prototype.update = function (options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n var series = this,\n chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions,\n initialType = series.initialType || series.type,\n plotOptions = chart.options.plotOptions,\n initialSeriesProto = seriesTypes[initialType].prototype,\n groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup',\n 'shadowGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false },\n kinds = {};\n var seriesOptions,\n n,\n preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ],\n newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n var keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n options.joinBy ||\n options.mapData || // #11636\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedData', // #17057\n 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Treemap\n 'level', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n var casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n var ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n var marker = seriesOptions.marker,\n dataLabels = seriesOptions.dataLabels,\n oldMarker = oldOptions.marker || {};\n // If the marker got disabled or changed its symbol, width or\n // height - destroy\n if (marker && (marker.enabled === false ||\n oldMarker.symbol !== marker.symbol || // #10870, #15946\n oldMarker.height !== marker.height || // #16274\n oldMarker.width !== marker.width // #16274\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n for (var _a = 0, _b = this.points; _a < _b.length; _a++) {\n var point = _b[_a];\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n };\n /**\n * Used from within series.update\n * @private\n */\n Series.prototype.setName = function (name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n };\n /**\n * Check if the option has changed.\n * @private\n */\n Series.prototype.hasOptionChanged = function (optionName) {\n var chart = this.chart,\n option = this.options[optionName],\n plotOptions = chart.options.plotOptions,\n oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n };\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n Series.prototype.onMouseOver = function () {\n var series = this,\n chart = series.chart,\n hoverSeries = chart.hoverSeries,\n pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n };\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n Series.prototype.onMouseOut = function () {\n // trigger the event only if listeners exist\n var series = this,\n options = series.options,\n chart = series.chart,\n tooltip = chart.tooltip,\n hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n };\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n Series.prototype.setState = function (state, inherit) {\n var series = this,\n options = series.options,\n graph = series.graph,\n inactiveOtherPoints = options.inactiveOtherPoints,\n stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation),\n series.chart.options.chart.animation);\n var attribs,\n lineWidth = options.lineWidth,\n i = 0,\n opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle && isNumber(lineWidth)) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n };\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n Series.prototype.setAllPointsToState = function (state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n };\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.setVisible = function (vis, redraw) {\n var series = this,\n chart = series.chart,\n ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries,\n oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n var showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (series.legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n };\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.show = function () {\n this.setVisible(true);\n };\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n Series.prototype.hide = function () {\n this.setVisible(false);\n };\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n Series.prototype.select = function (selected) {\n var series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n };\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n Series.prototype.shouldShowTooltip = function (plotX, plotY, options) {\n if (options === void 0) { options = {}; }\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n };\n Series.defaultOptions = SeriesDefaults;\n /**\n * Registry of all available series types.\n *\n * @name Highcharts.Series.types\n * @type {Highcharts.Dictionary}\n */\n Series.types = SeriesRegistry.seriesTypes;\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Registers a series class to be accessible via `Series.types`.\n *\n * @function Highcharts.Series.registerType\n *\n * @param {string} seriesType\n * The series type as an identifier string in lower case.\n *\n * @param {Function} SeriesClass\n * The series class as a class pattern or a constructor function with\n * prototype.\n */\n Series.registerType = SeriesRegistry.registerSeriesType;\n return Series;\n }());\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n drawLegendSymbol: LegendSymbol.drawLineMarker,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n var stop = A.stop;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n var scrollablePlotArea = this.options.chart.scrollablePlotArea,\n scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth,\n scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight,\n scrollablePixelsX,\n scrollablePixelsY,\n corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (defined(scrollablePixelsY)) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n var marginName = corrections[axis.side].name,\n correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName],\n path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n var _this = this;\n var css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n var lastHoverPoint;\n addEvent(this.scrollingContainer, 'scroll', function () {\n if (_this.pointer) {\n delete _this.pointer.chartPosition;\n if (_this.hoverPoint) {\n lastHoverPoint = _this.hoverPoint;\n }\n _this.pointer.runPointActions(void 0, lastHoverPoint, true);\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n var container = this.container,\n fixedRenderer = this.fixedRenderer,\n fixedSelectors = [\n '.highcharts-breadcrumbs-group',\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ],\n axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(\"\" + axisClass + \":not(.highcharts-radial-axis)\", \"\" + axisClass + \"-labels:not(.highcharts-radial-axis-labels)\");\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n var firstTime = !this.fixedDiv,\n chartOptions = this.options.chart,\n scrollableOptions = chartOptions.scrollablePlotArea,\n Renderer = RendererRegistry.getRendererType();\n var fixedRenderer,\n scrollableWidth,\n scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterApplyDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n var axisOffset = this.axisOffset,\n maskTop = this.plotTop - axisOffset[0] - 1,\n maskLeft = this.plotLeft - axisOffset[3] - 1,\n maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1,\n maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1,\n maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0),\n maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0),\n d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d: d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} gantt/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = FU.format;\n var Series = SeriesRegistry.series;\n var destroyObjectProperties = U.destroyObjectProperties,\n pick = U.pick,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n * @private\n */\n var StackItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function StackItem(axis, options, negativeValue, x, stackOption) {\n var inverted = axis.chart.inverted, reversed = axis.reversed;\n this.axis = axis;\n // The stack goes to the left either if the stack has negative value\n // or when axis is reversed. XOR operator.\n var isNegative = (this.isNegative = !!negativeValue !== !!reversed);\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n this.cumulative = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : isNegative ? 'bottom' : 'top'),\n y: options.y,\n x: options.x\n };\n this.textAlign =\n options.textAlign ||\n (inverted ? (!isNegative ? 'left' : 'right') : 'center');\n }\n /**\n * @private\n */\n StackItem.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Renders the stack total label and adds it to the stack label group.\n * @private\n */\n StackItem.prototype.render = function (group) {\n var chart = this.axis.chart,\n options = this.options,\n formatOption = options.format, \n // Format the text in the label.\n str = formatOption ?\n format(formatOption,\n this,\n chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer.label(str, null, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels');\n var attr = {\n r: options.borderRadius || 0,\n text: str,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style || {});\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n };\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n * @private\n */\n StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX, xAxis) {\n var _a = this,\n alignOptions = _a.alignOptions,\n axis = _a.axis,\n label = _a.label,\n options = _a.options,\n textAlign = _a.textAlign,\n chart = axis.chart,\n stackBox = this.getStackBox({\n xOffset: xOffset,\n width: xWidth,\n boxBottom: boxBottom,\n boxTop: boxTop,\n defaultX: defaultX,\n xAxis: xAxis\n }),\n verticalAlign = alignOptions.verticalAlign;\n if (label && stackBox) {\n var labelBox = label.getBBox(),\n padding = label.padding;\n var isJustify = pick(options.overflow, 'justify') === 'justify',\n visible = void 0;\n // Reset alignOptions property after justify #12337\n alignOptions.x = options.x || 0;\n alignOptions.y = options.y || 0;\n // Calculate the adjusted Stack position, to take into consideration\n // The size if the labelBox and vertical alignment as\n // well as the text alignment. It's need to be done to work with\n // default SVGLabel.align/justify methods.\n var _b = this.adjustStackPosition({\n labelBox: labelBox,\n verticalAlign: verticalAlign,\n textAlign: textAlign\n }),\n x = _b.x,\n y = _b.y;\n stackBox.x -= x;\n stackBox.y -= y;\n // Align the label to the adjusted box.\n label.align(alignOptions, false, stackBox);\n // Check if label is inside the plotArea #12294\n visible = chart.isInsidePlot(label.alignAttr.x + alignOptions.x + x, label.alignAttr.y + alignOptions.y + y);\n if (!visible) {\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the stackBox\n Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);\n }\n // Add attr to aviod the default animation of justifyDataLabel.\n // Also add correct rotation with its rotation origin. #15129\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y,\n rotation: options.rotation,\n rotationOriginX: labelBox.width / 2,\n rotationOriginY: labelBox.height / 2\n });\n // Check if the dataLabel should be visible.\n if (pick(!isJustify && options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n }\n label[visible ? 'show' : 'hide']();\n }\n };\n /**\n * Adjust the stack BBox position, to take into consideration the alignment\n * of the dataLabel. This is necessary to make the stackDataLabel work with\n * core methods like `SVGLabel.adjust` and `Series.justifyDataLabel`.\n * @param AdjustStackPositionProps\n * @return {{x: number, y: number}} Adjusted BBox position of the stack.\n */\n StackItem.prototype.adjustStackPosition = function (_a) {\n var labelBox = _a.labelBox,\n verticalAlign = _a.verticalAlign,\n textAlign = _a.textAlign;\n var factorMap = {\n bottom: 0,\n middle: 1,\n top: 2,\n right: 1,\n center: 0,\n left: -1\n },\n verticalAlignFactor = factorMap[verticalAlign],\n textAlignFactor = factorMap[textAlign];\n return {\n x: labelBox.width / 2 + (labelBox.width / 2) * textAlignFactor,\n y: (labelBox.height / 2) * verticalAlignFactor\n };\n };\n /**\n * Get the bbox of the stack.\n * @private\n * @function Highcharts.StackItem#getStackBox\n * @return {BBoxObject} The x, y, height, width of the stack.\n */\n StackItem.prototype.getStackBox = function (stackBoxProps) {\n var stackItem = this,\n axis = this.axis,\n chart = axis.chart,\n boxTop = stackBoxProps.boxTop,\n defaultX = stackBoxProps.defaultX,\n xOffset = stackBoxProps.xOffset,\n width = stackBoxProps.width,\n boxBottom = stackBoxProps.boxBottom,\n totalStackValue = axis.stacking.usePercentage ?\n 100 :\n pick(boxTop,\n this.total, 0),\n y = axis.toPixels(totalStackValue),\n xAxis = stackBoxProps.xAxis || chart.xAxis[0],\n x = pick(defaultX,\n xAxis.toPixels(this.x)) + xOffset,\n yZero = axis.toPixels(boxBottom ? boxBottom : 0),\n height = Math.abs(y - yZero),\n inverted = chart.inverted,\n neg = stackItem.isNegative;\n return inverted ?\n {\n x: (neg ? y : y - height) - chart.plotLeft,\n y: x - chart.plotTop,\n width: height,\n height: width\n } : {\n x: x - chart.plotLeft,\n y: (neg ? y - height : y) - chart.plotTop,\n width: width,\n height: height\n };\n };\n return StackItem;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return StackItem;\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n function chartGetStacks() {\n var chart = this,\n inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach(function (axis) {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach(function (series) {\n var xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n }\n /**\n * @private\n */\n function onAxisDestroy() {\n var stacking = this.stacking;\n if (!stacking) {\n return;\n }\n var stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n if (this.coll === 'yAxis' && !this.stacking) {\n this.stacking = new AxisAdditions(this);\n }\n }\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n function seriesGetStackIndicator(stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.stackKey !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key,\n stackKey: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n }\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n function seriesModifyStacks() {\n var series = this,\n yAxis = series.yAxis,\n stackKey = series.stackKey,\n stacks = yAxis.stacking.stacks,\n processedXData = series.processedXData,\n stacking = series.options.stacking,\n stacker = series[stacking + 'Stacker'];\n var stackIndicator;\n if (stacker) { // Modifier function exists (Series.percentStacker etc.)\n [stackKey, '-' + stackKey].forEach(function (key) {\n var i = processedXData.length,\n x,\n stack,\n pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n stacker.call(series, pointExtremes, stack, i);\n }\n }\n });\n }\n }\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n function seriesPercentStacker(pointExtremes, stack, i) {\n var totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n }\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n function seriesSetGroupedPoints() {\n var stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n seriesProto.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, function (type, key) {\n if (key.slice(-5) === 'group') {\n objectEach(type, function (stack) { return stack.destroy(); });\n delete stacking.stacks[key];\n }\n });\n }\n }\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n function seriesSetStackedPoints(stackingParam) {\n var chart = this.chart,\n stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? \"\" + series.type + \",\".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = stacking === 'group' ?\n chart.yAxis[0] :\n series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;\n var stackIndicator,\n isNegative,\n stack,\n other,\n key,\n pointKey,\n i,\n x,\n y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative =\n pick(stack.cumulative, stackThreshold) + (y || 0);\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n var AxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function AxisAdditions(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n AxisAdditions.prototype.buildStacks = function () {\n var stacking = this;\n var axis = stacking.axis;\n var axisSeries = axis.series;\n var reversedStacks = axis.options.reversedStacks;\n var len = axisSeries.length;\n var actualSeries,\n i;\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n };\n /**\n * @private\n */\n AxisAdditions.prototype.cleanStacks = function () {\n var stacking = this;\n var stacks;\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n };\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n AxisAdditions.prototype.resetStacks = function () {\n var _this = this;\n objectEach(this.stacks, function (type) {\n objectEach(type, function (stack, x) {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < _this.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n };\n /**\n * @private\n */\n AxisAdditions.prototype.renderStackTotals = function () {\n var stacking = this,\n axis = stacking.axis,\n chart = axis.chart,\n renderer = chart.renderer,\n stacks = stacking.stacks,\n stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation,\n animationConfig = getDeferredAnimation(chart,\n stackLabelsAnim || false),\n stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n };\n return AxisAdditions;\n }());\n /* *\n *\n * Composition\n *\n * */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass, ChartClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.getStacks = chartGetStacks;\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getStackIndicator = seriesGetStackIndicator;\n seriesProto_1.modifyStacks = seriesModifyStacks;\n seriesProto_1.percentStacker = seriesPercentStacker;\n seriesProto_1.setGroupedPoints = seriesSetGroupedPoints;\n seriesProto_1.setStackedPoints = seriesSetStackedPoints;\n }\n }\n StackingAxis.compose = compose;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n var LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n LineSeries.prototype.drawGraph = function () {\n var series = this,\n options = this.options,\n graphPath = (this.gappedPath || this.getGraphPath).call(this),\n styledMode = this.chart.styledMode;\n var props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* Palette.neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n var graphKey = prop[0];\n var attribs,\n graph = series[graphKey];\n var verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth || 0,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n // Apply dash style\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n // The reason for the `else if` is that linecaps don't mix well\n // with dashstyle. The gaps get partially filled by the\n // linecap.\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n LineSeries.prototype.getGraphPath = function (points, nullsAsZeroes, connectCliffs) {\n var series = this,\n options = series.options,\n graphPath = [],\n xMap = [];\n var gap,\n step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n var reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n var plotX = point.plotX,\n plotY = point.plotY,\n lastPoint = points[i - 1];\n // the path to this point from the previous\n var pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (point.isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (point.isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n LineSeries.prototype.getZonesGraphs = function (props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n var propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n };\n LineSeries.defaultOptions = merge(Series.defaultOptions, \n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n {\n // nothing here yet\n });\n return LineSeries;\n }(Series));\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation. Changes to a point's color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color is set by the\n * `fill` attribute, so the change in class name won't have a visual effect by\n * default.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n var AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n AreaSeries.prototype.drawGraph = function () {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n _super.prototype.drawGraph.apply(this);\n // Define local variables\n var series = this,\n areaPath = this.areaPath,\n options = this.options,\n zones = this.zones,\n props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone,\n i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n var areaKey = prop[0],\n attribs = {};\n var area = series[areaKey];\n var verb = area ? 'animate' : 'attr';\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n };\n /**\n * @private\n */\n AreaSeries.prototype.getGraphPath = function (points) {\n var getGraphPath = LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n var point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0;\n var top,\n bottom,\n isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n var plotX,\n isNull,\n yBottom;\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (var i = 0, iEnd = points.length; i < iEnd; ++i) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n var topPath = getGraphPath.call(this,\n graphPoints,\n true,\n true);\n bottomPoints.reversed = true;\n var bottomPath = getGraphPath.call(this,\n bottomPoints,\n true,\n true);\n var firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n var areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n var graphPath = getGraphPath\n .call(this,\n graphPoints,\n false,\n connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n };\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n AreaSeries.prototype.getStackPoints = function (points) {\n var series = this,\n segment = [],\n keys = [],\n xAxis = this.xAxis,\n yAxis = this.yAxis,\n stack = yAxis.stacking.stacks[this.stackKey],\n pointMap = {},\n yAxisSeries = yAxis.series,\n seriesLength = yAxisSeries.length,\n upOrDown = yAxis.options.reversedStacks ? 1 : -1,\n seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (var i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n var visibleSeries_1 = yAxisSeries.map(function (s) { return s.visible; });\n keys.forEach(function (x, idx) {\n var y = 0,\n stackPoint,\n stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n var nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull',\n cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff',\n otherStack = stack[keys[idx + direction]];\n var cliff = 0;\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n var i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries_1[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n var i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n };\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0\n });\n return AreaSeries;\n }(LineSeries));\n extend(AreaSeries.prototype, {\n singleStacks: false,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Spline series type.\n *\n * @private\n */\n var SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n SplineSeries.prototype.getPointSpline = function (points, point, i) {\n var \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5,\n denom = smoothing + 1,\n plotX = point.plotX || 0,\n plotY = point.plotY || 0,\n lastPoint = points[i - 1],\n nextPoint = points[i + 1];\n var leftContX,\n leftContY,\n rightContX,\n rightContY;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n var lastX = lastPoint.plotX || 0,\n lastY = lastPoint.plotY || 0,\n nextX = nextPoint.plotX || 0,\n nextY = nextPoint.plotY || 0;\n var correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n var ret = [\n 'C',\n pick(lastPoint.rightContX,\n lastPoint.plotX, 0),\n pick(lastPoint.rightContY,\n lastPoint.plotY, 0),\n pick(leftContX,\n plotX, 0),\n pick(leftContY,\n plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n };\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n return SplineSeries;\n }(LineSeries));\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Spline/SplineSeries.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SplineSeries, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n areaProto = _a.area.prototype;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n var AreaSplineSeries = /** @class */ (function (_super) {\n __extends(AreaSplineSeries, _super);\n function AreaSplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n return _this;\n }\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n return AreaSplineSeries;\n }(SplineSeries));\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n var ColumnSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each column or bar.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n *\n * @product highcharts highstock gantt\n */\n borderRadius: 0,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections,\n this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode,\n the `colors` or `series.colors` arrays are not\n * supported,\n and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`,\n the columns will center in the category,\n ignoring null\n * or missing points. When `false`,\n space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n */\n centerInCategory: false,\n /**\n * Padding between each value groups,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /** @ignore-option */\n marker: null,\n /**\n * The maximum allowed pixel width for a column,\n translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`,\n the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts,\n minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold,\n all\n * points are drawn,\n event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns),\n is that animation is performed on\n * updates. On the other hand,\n when the series contains more points than\n * the crop threshold,\n the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis,\n the range will be 1\n * by default (one category unit). On linear and datetime axes,\n the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically,\n but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode,\n the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /** @ignore-option */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns,\n for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border,\n but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode,\n the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode,\n the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */\n };\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeriesDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, ColumnSeriesDefaults, H, LegendSymbol, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var animObject = A.animObject;\n var color = Color.parse;\n var hasTouch = H.hasTouch,\n noop = H.noop;\n var clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n objectEach = U.objectEach;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n var ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.borderWidth = void 0;\n _this.data = void 0;\n _this.group = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n ColumnSeries.prototype.animate = function (init) {\n var series = this,\n yAxis = this.yAxis,\n options = series.options,\n inverted = this.chart.inverted,\n attr = {},\n translateProp = inverted ?\n 'translateX' :\n 'translateY';\n var translateStart,\n translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxis.pos, yAxis.pos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxis.pos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n };\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n ColumnSeries.prototype.init = function (chart, options) {\n _super.prototype.init.apply(this, arguments);\n var series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n };\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n ColumnSeries.prototype.getColumnMetrics = function () {\n var series = this,\n options = series.options,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks),\n stackGroups = {};\n var stackKey,\n columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n var otherYAxis = otherSeries.yAxis,\n otherOptions = otherSeries.options;\n var columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n var categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ),\n groupPadding = categoryWidth * options.groupPadding,\n groupWidth = categoryWidth - 2 * groupPadding,\n pointOffsetWidth = groupWidth / (columnCount || 1),\n pointWidth = Math.min(options.maxPointWidth || xAxis.len,\n pick(options.pointWidth,\n pointOffsetWidth * (1 - 2 * options.pointPadding))),\n pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0),\n pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount: columnCount\n };\n return series.columnMetrics;\n };\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n ColumnSeries.prototype.crispCol = function (x, y, w, h) {\n var chart = this.chart,\n borderWidth = this.borderWidth,\n xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n var right,\n yCrisp = borderWidth % 2 ? 0.5 : 1;\n if (chart.inverted && chart.renderer.isVML) {\n yCrisp += 1;\n }\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n var bottom = Math.round(y + h) + yCrisp,\n fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n ColumnSeries.prototype.adjustForMissingColumns = function (x, pointWidth, point, metrics) {\n var _this = this;\n var stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n var reversedStacks_1 = this.yAxis.options.reversedStacks;\n var indexInCategory_1 = 0,\n totalInCategory_1 = reversedStacks_1 ? 0 : -metrics.columnCount;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, function (stack) {\n if (typeof point.x === 'number') {\n var stackItem_1 = stack[point.x.toString()];\n if (stackItem_1) {\n var pointValues = stackItem_1.points[_this.index];\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory_1 = totalInCategory_1;\n }\n if (stackItem_1.hasValidPoints) {\n reversedStacks_1 ? // #16169\n totalInCategory_1++ : totalInCategory_1--;\n }\n // If `stacking` is not enabled, look for the index\n }\n else if (isArray(pointValues)) {\n // If there are multiple points with the same X\n // then gather all series in category, and\n // assign index\n var seriesIndexes = Object\n .keys(stackItem_1.points)\n .filter(function (pointKey) {\n // Filter out duplicate X's\n return !pointKey.match(',') &&\n // Filter out null points\n stackItem_1.points[pointKey] &&\n stackItem_1.points[pointKey].length > 1;\n })\n .map(parseFloat)\n .sort(function (a, b) { return b - a; });\n indexInCategory_1 = seriesIndexes.indexOf(_this.index);\n totalInCategory_1 = seriesIndexes.length;\n }\n }\n }\n });\n // Compute the adjusted x position\n var boxWidth = (totalInCategory_1 - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory_1 * metrics.paddedWidth;\n }\n return x;\n };\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n ColumnSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n seriesPointWidth = metrics.width,\n seriesXOffset = series.pointXOffset = metrics.offset,\n dataMin = series.dataMin,\n dataMax = series.dataMax;\n // postprocessed for border width\n var seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance);\n var up,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n pointWidth = seriesPointWidth,\n barX = plotX + seriesXOffset,\n barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints\n // Allow shapeType defined on pointClass level\n point.shapeType = series.pointClass.prototype.shapeType || 'rect';\n point.shapeArgs = series.crispCol.apply(series, point.isNull ?\n // #3169, drilldown from null must have a position to work\n // from #6585, dataLabel should be placed on xAxis, not\n // floating in the middle of the chart\n [barX, translatedThreshold, barW, 0] :\n [barX, barY, barW, barH]);\n });\n };\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n ColumnSeries.prototype.drawGraph = function () {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n };\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n ColumnSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n var stateOptions,\n zone,\n brightness,\n fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill),\n dashstyle = (point && point.options.dashStyle) || options.dashStyle,\n strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0,\n opacity = pick(point && point.opacity,\n options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n var ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n };\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n ColumnSeries.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = this.chart,\n options = series.options,\n renderer = chart.renderer,\n animationLimit = options.animationLimit || 250;\n var shapeArgs;\n // draw the columns\n points.forEach(function (point) {\n var plotY = point.plotY;\n var graphic = point.graphic,\n hasGraphic = !!graphic,\n verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Border radius is not stylable (#6900)\n if (options.borderRadius) {\n graphic[verb]({\n r: options.borderRadius\n });\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow, null, options.stacking && !options.borderRadius);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n };\n /**\n * Draw the tracker for a point.\n * @private\n */\n ColumnSeries.prototype.drawTracker = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n pointer = chart.pointer,\n onMouseOver = function (e) {\n var point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n var dataLabels;\n // Add reference to the point\n points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n ColumnSeries.prototype.remove = function () {\n var series = this,\n chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n };\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, ColumnSeriesDefaults);\n return ColumnSeries;\n }(Series));\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n /**\n * Use a solid rectangle like the area series types\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawLegendSymbol\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Series|Highcharts.Point} item\n * The series (this) or point\n */\n drawLegendSymbol: LegendSymbol.drawRectangle,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var format = F.format;\n var defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var series = this,\n chart = this.chart,\n inverted = this.isCartesian && chart.inverted,\n enabledDataSorting = this.enabledDataSorting,\n plotX = point.plotX,\n plotY = point.plotY,\n rotation = options.rotation,\n align = options.align,\n isInsidePlot = defined(plotX) &&\n defined(plotY) &&\n chart.isInsidePlot(plotX,\n Math.round(plotY), {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n }),\n setStartPos = function (alignOptions) {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point,\n dataLabel,\n isNew,\n isInsidePlot,\n alignOptions);\n }\n };\n var baseline,\n rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n defined(plotX) &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n })));\n var pos = point.pos();\n if (visible && pos) {\n if (rotation) {\n dataLabel.attr({ align: align });\n }\n var bBox = dataLabel.getBBox(true),\n bBoxCorrection = [0, 0];\n baseline = chart.renderer.fontMetrics(chart.styledMode ? void 0 : options.style.fontSize, dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: pos[0],\n y: Math.round(pos[1]),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n bBoxCorrection = [\n bBox.x - Number(dataLabel.attr('x')),\n bBox.y - Number(dataLabel.attr('y'))\n ];\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr);\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n var x = alignAttr.x,\n y = alignAttr.y;\n x += bBoxCorrection[0];\n y += bBoxCorrection[1];\n // Uncomment this block to visualize the bounding boxes used for\n // determining visibility\n /*\n chart.renderer.rect(\n chart.plotLeft + alignAttr.x + bBox.x,\n chart.plotTop + alignAttr.y + bBox.y + 9999,\n bBox.width,\n bBox.height\n ).attr({\n stroke: 'rgba(0, 0, 0, 0.3)',\n 'stroke-width': 0.5\n }).add();\n chart.renderer.circle(\n chart.plotLeft + alignAttr.x,\n chart.plotTop + alignAttr.y,\n 2\n ).attr({\n fill: 'red',\n zIndex: 20\n }).add();\n // */\n visible =\n chart.isInsidePlot(x, y, {\n paneCoordinates: true,\n series: series\n }) &&\n chart.isInsidePlot(x + bBox.width, y + bBox.height, {\n paneCoordinates: true,\n series: series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: pos[0],\n anchorY: pos[1]\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide();\n dataLabel.placed = false; // don't animate back in\n }\n else {\n dataLabel.show();\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n var filter = options.filter;\n if (filter) {\n var op = filter.operator;\n var prop = point[filter.property];\n var val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n var seriesProto = SeriesClass.prototype;\n composedClasses.push(SeriesClass);\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels(points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n seriesOptions = series.options,\n hasRendered = series.hasRendered || 0,\n renderer = chart.renderer,\n _a = chart.options.chart,\n backgroundColor = _a.backgroundColor,\n plotBackgroundColor = _a.plotBackgroundColor,\n contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||\n (isString(backgroundColor) && backgroundColor) ||\n \"#000000\" /* Palette.neutralColor100 */);\n var seriesDlOptions = seriesOptions.dataLabels,\n pointOptions,\n dataLabelsGroup;\n var dataLabelAnim = seriesDlOptions.animation,\n animationConfig = seriesDlOptions.defer ?\n getDeferredAnimation(chart,\n dataLabelAnim,\n series) :\n { defer: 0,\n duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n // Create a separate group for the data labels to avoid rotation\n dataLabelsGroup = series.plotGroup('dataLabelsGroup', 'data-labels', !hasRendered ? 'hidden' : 'inherit', // #5133, #10220\n seriesDlOptions.zIndex || 6);\n dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered) {\n var group = series.dataLabelsGroup;\n if (group) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n group[seriesOptions.animation ? 'animate' : 'attr']({ opacity: 1 }, animationConfig);\n }\n }\n // Make the labels for each point\n points.forEach(function (point) {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach(function (labelOptions, i) {\n // Options for one datalabel\n var labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point,\n labelOptions)),\n connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n var labelConfig,\n formatString,\n labelText,\n style,\n rotation,\n attr,\n dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel,\n isNew = !dataLabel;\n var labelDistance = pick(labelOptions.distance,\n point.labelDistance);\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* Palette.neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n contrastColor;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n var backgroundColor_1 = labelOptions.backgroundColor,\n borderColor = labelOptions.borderColor;\n attr.fill = backgroundColor_1 === 'auto' ?\n point.color :\n backgroundColor_1;\n attr.stroke = borderColor === 'auto' ?\n point.color :\n borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML ||\n (\n // Change from no rotation to rotation and\n // vice versa. Don't use defined() because\n // rotation = 0 means also rotation = undefined\n (!dataLabel.rotation ||\n !labelOptions.rotation) &&\n dataLabel.rotation !== labelOptions.rotation))) {\n isNew = true;\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, 0, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, 0, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n var textPathOptions = labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath;\n if (textPathOptions && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n else if (dataLabel) {\n dataLabel.hide();\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n var chart = this.chart,\n align = options.align,\n verticalAlign = options.verticalAlign,\n padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n var _a = options.x,\n x = _a === void 0 ? 0 : _a,\n _b = options.y,\n y = _b === void 0 ? 0 : _b,\n off,\n justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n var res = [],\n i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n var chart = this.chart,\n inverted = chart.inverted,\n xAxis = this.xAxis,\n reversed = xAxis.reversed,\n labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2,\n pointWidth = point.pointWidth,\n halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var Series = SeriesRegistry.series;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var inverted = this.chart.inverted,\n series = point.series,\n xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0,\n yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs,\n below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold,\n yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking),\n overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n var BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n return BarSeries;\n }(ColumnSeries));\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n var ScatterSeriesDefaults = {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values,\n a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis,\n setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis,\n setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series,\n a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/demo/scatter-jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true,\n the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series,\n or out of the plot area. When false,\n the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false,\n the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock highmaps\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`,\n `pointFormat`,\n * `yDecimals`,\n `xDateFormat`,\n `yPrefix` and `ySuffix`. Unlike other\n * series,\n in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock highmaps\n */\n tooltip: {\n /**\n * @product highcharts highstock\n */\n headerFormat: '\\u25CF ' +\n ' {series.name}
',\n pointFormat: 'x: {point.x}
y: {point.y}
'\n }\n };\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Scatter/ScatterSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ScatterSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n LineSeries = _a.line;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n var ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n ScatterSeries.prototype.applyJitter = function () {\n var series = this,\n jitter = this.options.jitter,\n len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n var rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n var axis,\n plotProp = 'plot' + dim.toUpperCase(),\n min,\n max,\n translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n };\n /**\n * @private\n */\n ScatterSeries.prototype.drawGraph = function () {\n if (this.options.lineWidth) {\n _super.prototype.drawGraph.call(this);\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n };\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, ScatterSeriesDefaults);\n return ScatterSeries;\n }(LineSeries));\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n thickness = options.thickness;\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions: positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n var startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360),\n correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n var PiePoint = /** @class */ (function (_super) {\n __extends(PiePoint, _super);\n function PiePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.labelDistance = void 0;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n PiePoint.prototype.getConnectorPath = function () {\n var labelPosition = this.labelPosition,\n options = this.series.options.dataLabels,\n predefinedShapes = this.connectorShapes;\n var connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.final.x,\n y: labelPosition.final.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n };\n /**\n * @private\n */\n PiePoint.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n /**\n * @private\n */\n PiePoint.prototype.haloPath = function (size) {\n var shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end\n });\n };\n /**\n * Initialize the pie slice.\n * @private\n */\n PiePoint.prototype.init = function () {\n var _this = this;\n _super.prototype.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n var toggleSlice = function (e) {\n _this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n };\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n PiePoint.prototype.isValid = function () {\n return isNumber(this.y) && this.y >= 0;\n };\n /**\n * Toggle the visibility of a pie slice or other data point. Note that this\n * method is available only for some series, like pie, treemap and sunburst.\n *\n * @function Highcharts.Point#setVisible\n *\n * @param {boolean} [vis]\n * True to show the pie slice or other data point, false to hide. If\n * undefined, the visibility is toggled.\n *\n * @param {boolean} [redraw] Whether to redraw the chart after the point is\n * altered. If doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw|chart.redraw()} after.\n *\n */\n PiePoint.prototype.setVisible = function (vis, redraw) {\n var _this = this;\n var series = this.series,\n chart = series.chart,\n ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector', 'shadowGroup'].forEach(function (key) {\n if (_this[key]) {\n _this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n };\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial} [animation]\n * Animation options.\n */\n PiePoint.prototype.slice = function (sliced, redraw, animation) {\n var series = this.series,\n chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n if (this.shadowGroup) {\n this.shadowGroup.animate(this.getTranslate());\n }\n };\n return PiePoint;\n }(Point));\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n var breakAt = connectorPosition.breakAt,\n touchingSliceAt = connectorPosition.touchingSliceAt,\n lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n var touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n var touchingSliceAt = connectorPosition.touchingSliceAt,\n series = this.series,\n pieCenterX = series.center[0],\n plotWidth = series.chart.plotWidth,\n plotLeft = series.chart.plotLeft,\n alignment = labelPosition.alignment,\n radius = this.shapeArgs.r,\n crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1),\n crookX = alignment === 'left' ?\n pieCenterX + radius + (plotWidth + plotLeft -\n pieCenterX - radius) * (1 - crookDistance) :\n plotLeft + (pieCenterX - radius) * crookDistance,\n segmentWithCrook = [\n 'L',\n crookX,\n labelPosition.y\n ];\n var useCrook = true;\n // crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (alignment === 'left' ?\n (crookX > labelPosition.x || crookX < touchingSliceAt.x) :\n (crookX < labelPosition.x || crookX > touchingSliceAt.x)) {\n useCrook = false;\n }\n // assemble the path\n var path = [['M',\n labelPosition.x,\n labelPosition.y]];\n if (useCrook) {\n path.push(segmentWithCrook);\n }\n path.push(['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart,\n * softThreshold, stacking, step, threshold, turboThreshold,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts highmaps\n * @optionparent plotOptions.pie\n *\n * @private\n */\n var PieSeriesDefaults = {\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts highmaps\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts highmaps\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `plotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts highmaps\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'fixedOffset'`\n * (default), `'straight'` and `'crookedLine'`. Using\n * `'crookedLine'` has the most sense (in most of the cases) when\n * `'alignTo'` is set.\n *\n * Users can provide their own method by passing a function instead\n * of a String. 3 arguments are passed to the callback:\n *\n * - Object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by\n * one of the following:\n * `'left'` (pie on the left side of the data label),\n * `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - Object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position\n * of the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form\n * (see the example).\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts highmaps\n */\n connectorShape: 'fixedOffset',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts highmaps\n */\n crookDistance: '70%',\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highmaps\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with\n * sharp break. Works only if `connectorShape` equals to\n * `fixedOffset`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts highmaps\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts highmaps\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Thickness describing the ring size for a donut type chart,\n * overriding [innerSize](#plotOptions.pie.innerSize).\n *\n * @type {number}\n * @default undefined\n * @product highcharts\n * @since 10.1.0\n * @apioption plotOptions.pie.thickness\n * @private\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts highmaps\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers. Setting overridden by thickness.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts highmaps\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts highmaps\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts highmaps\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts highmaps\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts highmaps\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highmaps\n *\n * @private\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts highmaps\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts highmaps\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts highmaps\n */\n brightness: 0.1\n }\n }\n };\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, linkedTo, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts highmaps\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts highmaps\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts highmaps\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts highmaps\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts highmaps\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts highmaps\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Series/Pie/PiePoint.js'], _modules['Series/Pie/PieSeriesDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, LegendSymbol, PiePoint, PieSeriesDefaults, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var getStartAndEndRadians = CU.getStartAndEndRadians;\n var noop = H.noop;\n var clamp = U.clamp,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n var PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.center = void 0;\n _this.data = void 0;\n _this.maxLabelDistance = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n PieSeries.prototype.animate = function (init) {\n var series = this,\n points = series.points,\n startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n var graphic = point.graphic,\n args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n PieSeries.prototype.drawEmpty = function () {\n var start = this.startAngleRad,\n end = this.endAngleRad,\n options = this.options;\n var centerX,\n centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start: start,\n end: end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* Palette.neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n };\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n PieSeries.prototype.drawPoints = function () {\n var renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n };\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n PieSeries.prototype.generatePoints = function () {\n _super.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n PieSeries.prototype.getX = function (y, left, point) {\n var center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n var angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n var x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n PieSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * Draw the data points\n * @private\n */\n PieSeries.prototype.redrawPoints = function () {\n var series = this,\n chart = series.chart,\n renderer = chart.renderer,\n shadow = series.options.shadow;\n var groupTranslation,\n graphic,\n pointAttr,\n shapeArgs;\n this.drawEmpty();\n if (shadow && !series.shadowGroup && !chart.styledMode) {\n series.shadowGroup = renderer\n .g('shadow')\n .attr({ zIndex: -1 })\n .add(series.group);\n }\n // draw the slices\n series.points.forEach(function (point) {\n var animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n var shadowGroup = void 0;\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n // Put the shadow behind all points\n shadowGroup = point.shadowGroup;\n if (shadow && !shadowGroup) {\n shadowGroup = point.shadowGroup = renderer\n .g('shadow')\n .add(series.shadowGroup);\n }\n if (shadowGroup) {\n shadowGroup.attr(groupTranslation);\n }\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' })\n .shadow(shadow, shadowGroup);\n }\n point.delayedRendering = false;\n }\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n };\n /**\n * Utility for sorting data labels.\n * @private\n */\n PieSeries.prototype.sortByAngle = function (points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n };\n /**\n * Do translation for pie slices\n * @private\n */\n PieSeries.prototype.translate = function (positions) {\n fireEvent(this, 'translate');\n this.generatePoints();\n var series = this,\n precision = 1000, // issue #172\n options = series.options,\n slicedOffset = options.slicedOffset,\n connectorOffset = slicedOffset + (options.borderWidth || 0),\n radians = getStartAndEndRadians(options.startAngle,\n options.endAngle),\n startAngleRad = series.startAngleRad = radians.start,\n endAngleRad = series.endAngleRad = radians.end,\n circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points,\n labelDistance = options.dataLabels.distance,\n ignoreHiddenPoint = options.ignoreHiddenPoint,\n len = points.length;\n var finalConnectorOffset,\n start,\n end,\n angle, \n // the x component of the radius vector for a given point\n radiusX,\n radiusY,\n i,\n point,\n cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n var shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n 'final': {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n };\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n PieSeries.prototype.updateTotals = function () {\n var points = this.points,\n len = points.length,\n ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n var i,\n point,\n total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n };\n PieSeries.defaultOptions = merge(Series.defaultOptions, PieSeriesDefaults);\n return PieSeries;\n }(Series));\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series;\n var arrayMax = U.arrayMax,\n clamp = U.clamp,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n var dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n var maxDataLabelWidth = 0,\n dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(PieSeriesClass) === -1) {\n composedClasses.push(PieSeriesClass);\n var pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n var series = this,\n data = series.data,\n chart = series.chart,\n options = series.options.dataLabels || {},\n connectorPadding = options.connectorPadding,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotLeft = chart.plotLeft,\n maxWidth = Math.round(chart.chartWidth / 3),\n seriesCenter = series.center,\n radius = seriesCenter[2] / 2,\n centerY = seriesCenter[1],\n halves = [\n [],\n [] // left\n ],\n overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n var point,\n connectorWidth,\n connector,\n dataLabel,\n dataLabelWidth, \n // labelPos,\n labelPosition,\n labelHeight, \n // divide the points into right and left halves for anti collision\n x,\n y,\n visibility,\n j,\n pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach(function (points, i) {\n var length = points.length,\n positions = [];\n var top,\n bottom,\n naturalY,\n sideOverflow,\n size,\n distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size: size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n // 10 is for the baseline (label vs text)\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n 10)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n labelPosition.final.x = x;\n labelPosition.final.y = y;\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n var isNew = void 0;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n var dataLabel = point.dataLabel,\n _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n var center = this.center,\n options = this.options,\n centerOption = options.center,\n minSize = options.minSize || 80,\n newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n options.thickness ?\n Math.max(0, newSize - options.thickness * 2) :\n Math.max(0, relativeLength(options.innerSize || 0, newSize)), newSize); // #6647\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n var chart = this,\n labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n var dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n var push = function (points) {\n return points.forEach(function (point) {\n if (point.visible) {\n var dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n var options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n };\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n var chart = this,\n len = labels.length,\n ren = chart.renderer,\n label,\n i,\n j,\n label1,\n label2,\n box1,\n box2,\n isLabelAffected = false,\n isIntersectRect = function (box1,\n box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n var pos,\n parent,\n bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0),\n lineHeightCorrection = 0,\n xOffset = 0,\n boxWidth,\n alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so\n // we need to substract the text height from text nodes too.\n lineHeightCorrection = ren\n .fontMetrics(null, label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0 &&\n // #15863 dataLabels are no longer hidden by translation\n label1.visibility !== 'hidden' &&\n label2.visibility !== 'hidden') {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n var complete,\n newOpacity,\n isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n extend(ChartClass.prototype, Additions.prototype);\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /* *\n *\n * Class\n *\n * */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n Additions.prototype.currentOptions = function (options) {\n var chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n var i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n };\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array} matches\n */\n Additions.prototype.matchResponsiveRule = function (rule, matches) {\n var condition = rule.condition,\n fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth,\n Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight,\n Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n };\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n Additions.prototype.setResponsive = function (redraw, reset) {\n var _this = this;\n var options = this.options.responsive,\n currentResponsive = this.currentResponsive;\n var ruleIds = [],\n undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach(function (rule) {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n _this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n var mergedOptions = merge.apply(void 0,\n ruleIds\n .map(function (ruleId) { return find((options || {}).rules || [],\n function (rule) { return (rule._id === ruleId); }); })\n .map(function (rule) { return (rule && rule.chartOptions); }));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n var currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n };\n return Additions;\n }());\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/Defaults.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, Defaults, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n var G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);\n G.Series = Series;\n G.StackItem = StackItem;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n // DefaultOptions\n G.defaultOptions = Defaults.defaultOptions;\n G.getOptions = Defaults.getOptions;\n G.time = Defaults.defaultTime;\n G.setOptions = Defaults.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n StackingAxis.compose(Axis, Chart, Series);\n // Default Export\n\n return G;\n });\n _registerModule(_modules, 'Core/Axis/BrokenAxis.js', [_modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (StackItem, U) {\n /* *\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n find = U.find,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n /**\n * Axis with support of broken data rows.\n * @private\n */\n var BrokenAxis;\n (function (BrokenAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Adds support for broken axes.\n * @private\n */\n function compose(AxisClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('brokenAxis');\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);\n addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto = SeriesClass.prototype;\n seriesProto.drawBreaks = seriesDrawBreaks;\n seriesProto.gappedPath = seriesGappedPath;\n addEvent(SeriesClass, 'afterGeneratePoints', onSeriesAfterGeneratePoints);\n addEvent(SeriesClass, 'afterRender', onSeriesAfterRender);\n }\n return AxisClass;\n }\n BrokenAxis.compose = compose;\n /**\n * @private\n */\n function onAxisAfterInit() {\n if (typeof this.brokenAxis !== 'undefined') {\n this.brokenAxis.setBreaks(this.options.breaks, false);\n }\n }\n /**\n * Force Axis to be not-ordinal when breaks are defined.\n * @private\n */\n function onAxisAfterSetOptions() {\n var axis = this;\n if (axis.brokenAxis && axis.brokenAxis.hasBreaks) {\n axis.options.ordinal = false;\n }\n }\n /**\n * @private\n */\n function onAxisAfterSetTickPositions() {\n var axis = this,\n brokenAxis = axis.brokenAxis;\n if (brokenAxis &&\n brokenAxis.hasBreaks) {\n var tickPositions = axis.tickPositions,\n info = axis.tickPositions.info,\n newPositions = [];\n for (var i = 0; i < tickPositions.length; i++) {\n if (!brokenAxis.isInAnyBreak(tickPositions[i])) {\n newPositions.push(tickPositions[i]);\n }\n }\n axis.tickPositions = newPositions;\n axis.tickPositions.info = info;\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n var axis = this;\n if (!axis.brokenAxis) {\n axis.brokenAxis = new Additions(axis);\n }\n }\n /**\n * @private\n */\n function onSeriesAfterGeneratePoints() {\n var _a = this,\n isDirty = _a.isDirty,\n connectNulls = _a.options.connectNulls,\n points = _a.points,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // Set, or reset visibility of the points. Axis.setBreaks marks\n // the series as isDirty\n if (isDirty) {\n var i = points.length;\n while (i--) {\n var point = points[i];\n // Respect nulls inside the break (#4275)\n var nullGap = point.y === null && connectNulls === false;\n var isPointInBreak = (!nullGap && ((xAxis &&\n xAxis.brokenAxis &&\n xAxis.brokenAxis.isInAnyBreak(point.x,\n true)) || (yAxis &&\n yAxis.brokenAxis &&\n yAxis.brokenAxis.isInAnyBreak(point.y,\n true))));\n // Set point.visible if in any break.\n // If not in break, reset visible to original value.\n point.visible = isPointInBreak ?\n false :\n point.options.visible !== false;\n }\n }\n }\n /**\n * @private\n */\n function onSeriesAfterRender() {\n this.drawBreaks(this.xAxis, ['x']);\n this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));\n }\n /**\n * @private\n */\n function seriesDrawBreaks(axis, keys) {\n var series = this,\n points = series.points;\n var breaks,\n threshold,\n eventName,\n y;\n if (axis && // #5950\n axis.brokenAxis &&\n axis.brokenAxis.hasBreaks) {\n var brokenAxis_1 = axis.brokenAxis;\n keys.forEach(function (key) {\n breaks = brokenAxis_1 && brokenAxis_1.breakArray || [];\n threshold = axis.isXAxis ?\n axis.min :\n pick(series.options.threshold, axis.min);\n points.forEach(function (point) {\n y = pick(point['stack' + key.toUpperCase()], point[key]);\n breaks.forEach(function (brk) {\n if (isNumber(threshold) && isNumber(y)) {\n eventName = false;\n if ((threshold < brk.from && y > brk.to) ||\n (threshold > brk.from && y < brk.from)) {\n eventName = 'pointBreak';\n }\n else if ((threshold < brk.from &&\n y > brk.from &&\n y < brk.to) || (threshold > brk.from &&\n y > brk.to &&\n y < brk.from)) {\n eventName = 'pointInBreak';\n }\n if (eventName) {\n fireEvent(axis, eventName, { point: point, brk: brk });\n }\n }\n });\n });\n });\n }\n }\n /**\n * Extend getGraphPath by identifying gaps in the data so that we\n * can draw a gap in the line or area. This was moved from ordinal\n * axis module to broken axis module as of #5045.\n *\n * @private\n * @function Highcharts.Series#gappedPath\n *\n * @return {Highcharts.SVGPathArray}\n * Gapped path\n */\n function seriesGappedPath() {\n var currentDataGrouping = this.currentDataGrouping,\n groupingSize = currentDataGrouping && currentDataGrouping.gapSize,\n points = this.points.slice(),\n yAxis = this.yAxis;\n var gapSize = this.options.gapSize,\n i = points.length - 1,\n stack;\n /**\n * Defines when to display a gap in the graph, together with the\n * [gapUnit](plotOptions.series.gapUnit) option.\n *\n * In case when `dataGrouping` is enabled, points can be grouped\n * into a larger time span. This can make the grouped points to\n * have a greater distance than the absolute value of `gapSize`\n * property, which will result in disappearing graph completely.\n * To prevent this situation the mentioned distance between\n * grouped points is used instead of previously defined\n * `gapSize`.\n *\n * In practice, this option is most often used to visualize gaps\n * in time series. In a stock chart, intraday data is available\n * for daytime hours, while gaps will appear in nights and\n * weekends.\n *\n * @see [gapUnit](plotOptions.series.gapUnit)\n * @see [xAxis.breaks](#xAxis.breaks)\n *\n * @sample {highstock} stock/plotoptions/series-gapsize/\n * Setting the gap size to 2 introduces gaps for weekends in\n * daily datasets.\n *\n * @type {number}\n * @default 0\n * @product highstock\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapSize\n */\n /**\n * Together with [gapSize](plotOptions.series.gapSize), this\n * option defines where to draw gaps in the graph.\n *\n * When the `gapUnit` is `\"relative\"` (default), a gap size of 5\n * means that if the distance between two points is greater than\n * 5 times that of the two closest points, the graph will be\n * broken.\n *\n * When the `gapUnit` is `\"value\"`, the gap is based on absolute\n * axis values, which on a datetime axis is milliseconds. This\n * also applies to the navigator series that inherits gap\n * options from the base series.\n *\n * @see [gapSize](plotOptions.series.gapSize)\n *\n * @type {string}\n * @default relative\n * @since 5.0.13\n * @product highstock\n * @validvalue [\"relative\", \"value\"]\n * @requires modules/broken-axis\n * @apioption plotOptions.series.gapUnit\n */\n if (gapSize && i > 0) { // #5008\n // Gap unit is relative\n if (this.options.gapUnit !== 'value') {\n gapSize *= this.basePointRange;\n }\n // Setting a new gapSize in case dataGrouping is enabled\n // (#7686)\n if (groupingSize &&\n groupingSize > gapSize &&\n // Except when DG is forced (e.g. from other series)\n // and has lower granularity than actual points (#11351)\n groupingSize >= this.basePointRange) {\n gapSize = groupingSize;\n }\n // extension for ordinal breaks\n var current = void 0,\n next = void 0;\n while (i--) {\n // Reassign next if it is not visible\n if (!(next && next.visible !== false)) {\n next = points[i + 1];\n }\n current = points[i];\n // Skip iteration if one of the points is not visible\n if (next.visible === false || current.visible === false) {\n continue;\n }\n if (next.x - current.x > gapSize) {\n var xRange = (current.x + next.x) / 2;\n points.splice(// insert after this one\n i + 1, 0, {\n isNull: true,\n x: xRange\n });\n // For stacked chart generate empty stack items, #6546\n if (yAxis.stacking && this.options.stacking) {\n stack = yAxis.stacking.stacks[this.stackKey][xRange] = new StackItem(yAxis, yAxis.options.stackLabels, false, xRange, this.stack);\n stack.total = 0;\n }\n }\n // Assign current to next for the upcoming iteration\n next = current;\n }\n }\n // Call base method\n return this.getGraphPath(points);\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides support for broken axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.hasBreaks = false;\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n Additions.isInBreak = function (brk, val) {\n var repeat = brk.repeat || Infinity,\n from = brk.from,\n length = brk.to - brk.from,\n test = (val >= from ?\n (val - from) % repeat :\n repeat - ((from - val) % repeat));\n var ret;\n if (!brk.inclusive) {\n ret = test < length && test !== 0;\n }\n else {\n ret = test <= length;\n }\n return ret;\n };\n /**\n * @private\n */\n Additions.lin2Val = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.from >= nval) {\n break;\n }\n else if (brk.to < nval) {\n nval += brk.len;\n }\n else if (Additions.isInBreak(brk, nval)) {\n nval += brk.len;\n }\n }\n return nval;\n };\n /**\n * @private\n */\n Additions.val2Lin = function (val) {\n var axis = this;\n var brokenAxis = axis.brokenAxis;\n var breakArray = brokenAxis && brokenAxis.breakArray;\n if (!breakArray || !isNumber(val)) {\n return val;\n }\n var nval = val,\n brk,\n i;\n for (i = 0; i < breakArray.length; i++) {\n brk = breakArray[i];\n if (brk.to <= val) {\n nval -= brk.len;\n }\n else if (brk.from >= val) {\n break;\n }\n else if (Additions.isInBreak(brk, val)) {\n nval -= (val - brk.from);\n break;\n }\n }\n return nval;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Returns the first break found where the x is larger then break.from\n * and smaller then break.to.\n *\n * @param {number} x\n * The number which should be within a break.\n *\n * @param {Array} breaks\n * The array of breaks to search within.\n *\n * @return {Highcharts.XAxisBreaksOptions|undefined}\n * Returns the first break found that matches, returns false if no break\n * is found.\n */\n Additions.prototype.findBreakAt = function (x, breaks) {\n return find(breaks, function (b) {\n return b.from < x && x < b.to;\n });\n };\n /**\n * @private\n */\n Additions.prototype.isInAnyBreak = function (val, testKeep) {\n var brokenAxis = this,\n axis = brokenAxis.axis,\n breaks = axis.options.breaks || [];\n var i = breaks.length,\n inbrk,\n keep,\n ret;\n if (i && isNumber(val)) {\n while (i--) {\n if (Additions.isInBreak(breaks[i], val)) {\n inbrk = true;\n if (!keep) {\n keep = pick(breaks[i].showPoints, !axis.isXAxis);\n }\n }\n }\n if (inbrk && testKeep) {\n ret = inbrk && !keep;\n }\n else {\n ret = inbrk;\n }\n }\n return ret;\n };\n /**\n * Dynamically set or unset breaks in an axis. This function in lighter\n * than usin Axis.update, and it also preserves animation.\n *\n * @private\n * @function Highcharts.Axis#setBreaks\n *\n * @param {Array} [breaks]\n * The breaks to add. When `undefined` it removes existing breaks.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart immediately.\n */\n Additions.prototype.setBreaks = function (breaks, redraw) {\n var brokenAxis = this;\n var axis = brokenAxis.axis;\n var hasBreaks = (isArray(breaks) && !!breaks.length);\n axis.isDirty = brokenAxis.hasBreaks !== hasBreaks;\n brokenAxis.hasBreaks = hasBreaks;\n axis.options.breaks = axis.userOptions.breaks = breaks;\n axis.forceRedraw = true; // Force recalculation in setScale\n // Recalculate series related to the axis.\n axis.series.forEach(function (series) {\n series.isDirty = true;\n });\n if (!hasBreaks && axis.val2lin === Additions.val2Lin) {\n // Revert to prototype functions\n delete axis.val2lin;\n delete axis.lin2val;\n }\n if (hasBreaks) {\n axis.userOptions.ordinal = false;\n axis.lin2val = Additions.lin2Val;\n axis.val2lin = Additions.val2Lin;\n axis.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n // If trying to set extremes inside a break, extend min to\n // after, and max to before the break ( #3857 )\n if (brokenAxis.hasBreaks) {\n var breaks_1 = (this.options.breaks || []);\n var axisBreak = void 0;\n while ((axisBreak = brokenAxis.findBreakAt(newMin, breaks_1))) {\n newMin = axisBreak.to;\n }\n while ((axisBreak = brokenAxis.findBreakAt(newMax, breaks_1))) {\n newMax = axisBreak.from;\n }\n // If both min and max is within the same break.\n if (newMax < newMin) {\n newMax = newMin;\n }\n }\n axis.constructor.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);\n };\n axis.setAxisTranslation = function () {\n axis.constructor.prototype.setAxisTranslation.call(this);\n brokenAxis.unitLength = void 0;\n if (brokenAxis.hasBreaks) {\n var breaks_2 = axis.options.breaks || [], \n // Temporary one:\n breakArrayT_1 = [],\n breakArray_1 = [],\n pointRangePadding = pick(axis.pointRangePadding, 0);\n var length_1 = 0,\n inBrk_1,\n repeat_1,\n min_1 = axis.userMin || axis.min,\n max_1 = axis.userMax || axis.max,\n start_1,\n i_1;\n // Min & max check (#4247)\n breaks_2.forEach(function (brk) {\n repeat_1 = brk.repeat || Infinity;\n if (isNumber(min_1) && isNumber(max_1)) {\n if (Additions.isInBreak(brk, min_1)) {\n min_1 += ((brk.to % repeat_1) -\n (min_1 % repeat_1));\n }\n if (Additions.isInBreak(brk, max_1)) {\n max_1 -= ((max_1 % repeat_1) -\n (brk.from % repeat_1));\n }\n }\n });\n // Construct an array holding all breaks in the axis\n breaks_2.forEach(function (brk) {\n start_1 = brk.from;\n repeat_1 = brk.repeat || Infinity;\n if (isNumber(min_1) && isNumber(max_1)) {\n while (start_1 - repeat_1 > min_1) {\n start_1 -= repeat_1;\n }\n while (start_1 < min_1) {\n start_1 += repeat_1;\n }\n for (i_1 = start_1; i_1 < max_1; i_1 += repeat_1) {\n breakArrayT_1.push({\n value: i_1,\n move: 'in'\n });\n breakArrayT_1.push({\n value: i_1 + brk.to - brk.from,\n move: 'out',\n size: brk.breakSize\n });\n }\n }\n });\n breakArrayT_1.sort(function (a, b) {\n return ((a.value === b.value) ?\n ((a.move === 'in' ? 0 : 1) -\n (b.move === 'in' ? 0 : 1)) :\n a.value - b.value);\n });\n // Simplify the breaks\n inBrk_1 = 0;\n start_1 = min_1;\n breakArrayT_1.forEach(function (brk) {\n inBrk_1 += (brk.move === 'in' ? 1 : -1);\n if (inBrk_1 === 1 && brk.move === 'in') {\n start_1 = brk.value;\n }\n if (inBrk_1 === 0 && isNumber(start_1)) {\n breakArray_1.push({\n from: start_1,\n to: brk.value,\n len: brk.value - start_1 - (brk.size || 0)\n });\n length_1 += (brk.value -\n start_1 -\n (brk.size || 0));\n }\n });\n brokenAxis.breakArray = breakArray_1;\n // Used with staticScale, and below the actual axis\n // length, when breaks are substracted.\n if (isNumber(min_1) &&\n isNumber(max_1) &&\n isNumber(axis.min)) {\n brokenAxis.unitLength = max_1 - min_1 - length_1 +\n pointRangePadding;\n fireEvent(axis, 'afterBreaks');\n if (axis.staticScale) {\n axis.transA = axis.staticScale;\n }\n else if (brokenAxis.unitLength) {\n axis.transA *=\n (max_1 - axis.min + pointRangePadding) /\n brokenAxis.unitLength;\n }\n if (pointRangePadding) {\n axis.minPixelPadding =\n axis.transA * (axis.minPointOffset || 0);\n }\n axis.min = min_1;\n axis.max = max_1;\n }\n }\n };\n }\n if (pick(redraw, true)) {\n axis.chart.redraw();\n }\n };\n return Additions;\n }());\n BrokenAxis.Additions = Additions;\n })(BrokenAxis || (BrokenAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return BrokenAxis;\n });\n _registerModule(_modules, 'masters/modules/broken-axis.src.js', [_modules['Core/Globals.js'], _modules['Core/Axis/BrokenAxis.js']], function (Highcharts, BrokenAxis) {\n\n var G = Highcharts;\n // Compositions\n BrokenAxis.compose(G.Axis, G.Series);\n\n });\n _registerModule(_modules, 'Extensions/DataGrouping/ApproximationRegistry.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Define the available approximation types. The data grouping\n * approximations takes an array or numbers as the first parameter. In case\n * of ohlc, four arrays are sent in as four parameters. Each array consists\n * only of numbers. In case null values belong to the group, the property\n * .hasNulls will be set to true on the array.\n *\n * @product highstock\n *\n * @private\n */\n var ApproximationRegistry = {\n // approximations added programmatically\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ApproximationRegistry;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/ApproximationDefaults.js', [_modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Core/Utilities.js']], function (ApproximationRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n correctFloat = U.correctFloat,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function average(arr) {\n var len = arr.length;\n var ret = sum(arr);\n // If we have a number, return it divided by the length. If not,\n // return null or undefined based on what the sum method finds.\n if (isNumber(ret) && len) {\n ret = correctFloat(ret / len);\n }\n return ret;\n }\n /**\n * The same as average, but for series with multiple values, like area ranges.\n * @private\n */\n function averages() {\n var ret = [];\n [].forEach.call(arguments, function (arr) {\n ret.push(average(arr));\n });\n // Return undefined when first elem. is undefined and let\n // sum method handle null (#7377)\n return typeof ret[0] === 'undefined' ? void 0 : ret;\n }\n /**\n * @private\n */\n function close(arr) {\n return arr.length ?\n arr[arr.length - 1] :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function high(arr) {\n return arr.length ?\n arrayMax(arr) :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * HLC, OHLC and range are special cases where a multidimensional array is input\n * and an array is output.\n * @private\n */\n function hlc(high, low, close) {\n high = ApproximationRegistry.high(high);\n low = ApproximationRegistry.low(low);\n close = ApproximationRegistry.close(close);\n if (isNumber(high) ||\n isNumber(low) ||\n isNumber(close)) {\n return [high, low, close];\n }\n }\n /**\n * @private\n */\n function low(arr) {\n return arr.length ?\n arrayMin(arr) :\n (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function ohlc(open, high, low, close) {\n open = ApproximationRegistry.open(open);\n high = ApproximationRegistry.high(high);\n low = ApproximationRegistry.low(low);\n close = ApproximationRegistry.close(close);\n if (isNumber(open) ||\n isNumber(high) ||\n isNumber(low) ||\n isNumber(close)) {\n return [open, high, low, close];\n }\n }\n /**\n * @private\n */\n function open(arr) {\n return arr.length ? arr[0] : (arr.hasNulls ? null : void 0);\n }\n /**\n * @private\n */\n function range(low, high) {\n low = ApproximationRegistry.low(low);\n high = ApproximationRegistry.high(high);\n if (isNumber(low) || isNumber(high)) {\n return [low, high];\n }\n if (low === null && high === null) {\n return null;\n }\n // else, return is undefined\n }\n /**\n * @private\n */\n function sum(arr) {\n var len = arr.length,\n ret;\n // 1. it consists of nulls exclusive\n if (!len && arr.hasNulls) {\n ret = null;\n // 2. it has a length and real values\n }\n else if (len) {\n ret = 0;\n while (len--) {\n ret += arr[len];\n }\n }\n // 3. it has zero length, so just return undefined\n // => doNothing()\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var ApproximationDefaults = {\n average: average,\n averages: averages,\n close: close,\n high: high,\n hlc: hlc,\n low: low,\n ohlc: ohlc,\n open: open,\n range: range,\n sum: sum\n };\n extend(ApproximationRegistry, ApproximationDefaults);\n\n return ApproximationDefaults;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Common options\n * @private\n */\n var common = {\n // enabled: null, // (true for stock charts, false for basic),\n // forced: undefined,\n groupPixelWidth: 2,\n // the first one is the point or start value, the second is the start\n // value if we're dealing with range, the third one is the end value if\n // dealing with a range\n dateTimeLabelFormats: {\n millisecond: [\n '%A, %b %e, %H:%M:%S.%L',\n '%A, %b %e, %H:%M:%S.%L',\n '-%H:%M:%S.%L'\n ],\n second: [\n '%A, %b %e, %H:%M:%S',\n '%A, %b %e, %H:%M:%S',\n '-%H:%M:%S'\n ],\n minute: [\n '%A, %b %e, %H:%M',\n '%A, %b %e, %H:%M',\n '-%H:%M'\n ],\n hour: [\n '%A, %b %e, %H:%M',\n '%A, %b %e, %H:%M',\n '-%H:%M'\n ],\n day: [\n '%A, %b %e, %Y',\n '%A, %b %e',\n '-%A, %b %e, %Y'\n ],\n week: [\n 'Week from %A, %b %e, %Y',\n '%A, %b %e',\n '-%A, %b %e, %Y'\n ],\n month: [\n '%B %Y',\n '%B',\n '-%B %Y'\n ],\n year: [\n '%Y',\n '%Y',\n '-%Y'\n ]\n }\n // smoothed = false, // enable this for navigator series only\n };\n /**\n * Extends common options\n * @private\n */\n var seriesSpecific = {\n line: {},\n spline: {},\n area: {},\n areaspline: {},\n arearange: {},\n column: {\n groupPixelWidth: 10\n },\n columnrange: {\n groupPixelWidth: 10\n },\n candlestick: {\n groupPixelWidth: 10\n },\n ohlc: {\n groupPixelWidth: 5\n },\n hlc: {\n groupPixelWidth: 5\n // Move to HeikinAshiSeries.ts aftre refactoring data grouping.\n },\n heikinashi: {\n groupPixelWidth: 10\n }\n };\n /**\n * Units are defined in a separate array to allow complete overriding in\n * case of a user option.\n * @private\n */\n var units = [\n [\n 'millisecond',\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1]\n ],\n [\n 'week',\n [1]\n ],\n [\n 'month',\n [1, 3, 6]\n ],\n [\n 'year',\n null\n ]\n ];\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingDefaults = {\n common: common,\n seriesSpecific: seriesSpecific,\n units: units\n };\n\n return DataGroupingDefaults;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingAxisComposition.js', [_modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Core/Utilities.js']], function (DataGroupingDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Variables\n *\n * */\n var AxisConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Check the groupPixelWidth and apply the grouping if needed.\n * Fired only after processing the data.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#applyGrouping\n */\n function applyGrouping(e) {\n var axis = this,\n series = axis.series;\n // Reset the groupPixelWidth for all series, #17141.\n series.forEach(function (series) {\n series.groupPixelWidth = void 0; // #2110\n });\n series.forEach(function (series) {\n series.groupPixelWidth = (axis.getGroupPixelWidth &&\n axis.getGroupPixelWidth());\n if (series.groupPixelWidth) {\n series.hasProcessed = true; // #2692\n }\n // Fire independing on series.groupPixelWidth to always set a proper\n // dataGrouping state, (#16238)\n series.applyGrouping(!!e.hasExtremesChanged);\n });\n }\n /**\n * @private\n */\n function compose(AxisClass) {\n AxisConstructor = AxisClass;\n if (composedMembers.indexOf(AxisClass) === -1) {\n composedMembers.push(AxisClass);\n addEvent(AxisClass, 'afterSetScale', onAfterSetScale);\n // When all series are processed, calculate the group pixel width and\n // then if this value is different than zero apply groupings.\n addEvent(AxisClass, 'postProcessData', applyGrouping);\n extend(AxisClass.prototype, {\n applyGrouping: applyGrouping,\n getGroupPixelWidth: getGroupPixelWidth,\n setDataGrouping: setDataGrouping\n });\n }\n }\n /**\n * Get the data grouping pixel width based on the greatest defined individual\n * width of the axis' series, and if whether one of the axes need grouping.\n * @private\n */\n function getGroupPixelWidth() {\n var series = this.series;\n var i = series.length,\n groupPixelWidth = 0,\n doGrouping = false,\n dataLength,\n dgOptions;\n // If one of the series needs grouping, apply it to all (#1634)\n while (i--) {\n dgOptions = series[i].options.dataGrouping;\n if (dgOptions) { // #2692\n // If multiple series are compared on the same x axis, give them the\n // same group pixel width (#334)\n groupPixelWidth = Math.max(groupPixelWidth, \n // Fallback to commonOptions (#9693)\n pick(dgOptions.groupPixelWidth, DataGroupingDefaults.common.groupPixelWidth));\n dataLength = (series[i].processedXData || series[i].data).length;\n // Execute grouping if the amount of points is greater than the\n // limit defined in groupPixelWidth\n if (series[i].groupPixelWidth ||\n (dataLength >\n (this.chart.plotSizeX / groupPixelWidth)) ||\n (dataLength && dgOptions.forced)) {\n doGrouping = true;\n }\n }\n }\n return doGrouping ? groupPixelWidth : 0;\n }\n /**\n * When resetting the scale reset the hasProccessed flag to avoid taking\n * previous data grouping of neighbour series into accound when determining\n * group pixel width (#2692).\n * @private\n */\n function onAfterSetScale() {\n this.series.forEach(function (series) {\n series.hasProcessed = false;\n });\n }\n /**\n * Highcharts Stock only. Force data grouping on all the axis' series.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#setDataGrouping\n *\n * @param {boolean|Highcharts.DataGroupingOptionsObject} [dataGrouping]\n * A `dataGrouping` configuration. Use `false` to disable data grouping\n * dynamically.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for a later call to\n * {@link Chart#redraw}.\n */\n function setDataGrouping(dataGrouping, redraw) {\n var axis = this;\n var i;\n redraw = pick(redraw, true);\n if (!dataGrouping) {\n dataGrouping = {\n forced: false,\n units: null\n };\n }\n // Axis is instantiated, update all series\n if (this instanceof AxisConstructor) {\n i = this.series.length;\n while (i--) {\n this.series[i].update({\n dataGrouping: dataGrouping\n }, false);\n }\n // Axis not yet instanciated, alter series options\n }\n else {\n this.chart.options.series.forEach(function (seriesOptions) {\n // Merging dataGrouping options with already defined options #16759\n seriesOptions.dataGrouping = typeof dataGrouping === 'boolean' ?\n dataGrouping :\n merge(dataGrouping, seriesOptions.dataGrouping);\n });\n }\n // Clear ordinal slope, so we won't accidentaly use the old one (#7827)\n if (axis.ordinal) {\n axis.ordinal.slope = void 0;\n }\n if (redraw) {\n this.chart.redraw();\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingAxisComposition = {\n compose: compose\n };\n\n return DataGroupingAxisComposition;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGroupingSeriesComposition.js', [_modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Defaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ApproximationRegistry, DataGroupingDefaults, DateTimeAxis, D, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n defined = U.defined,\n error = U.error,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var baseGeneratePoints = seriesProto.generatePoints;\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function adjustExtremes(xAxis, groupedXData) {\n // Make sure the X axis extends to show the first group (#2533)\n // But only for visible series (#5493, #6393)\n if (defined(groupedXData[0]) &&\n isNumber(xAxis.min) &&\n isNumber(xAxis.dataMin) &&\n groupedXData[0] < xAxis.min) {\n if ((!defined(xAxis.options.min) &&\n xAxis.min <= xAxis.dataMin) ||\n xAxis.min === xAxis.dataMin) {\n xAxis.min = Math.min(groupedXData[0], xAxis.min);\n }\n xAxis.dataMin = Math.min(groupedXData[0], xAxis.dataMin);\n }\n // When the last anchor set, change the extremes that\n // the last point is visible (#12455).\n if (defined(groupedXData[groupedXData.length - 1]) &&\n isNumber(xAxis.max) &&\n isNumber(xAxis.dataMax) &&\n groupedXData[groupedXData.length - 1] > xAxis.max) {\n if ((!defined(xAxis.options.max) &&\n isNumber(xAxis.dataMax) &&\n xAxis.max >= xAxis.dataMax) || xAxis.max === xAxis.dataMax) {\n xAxis.max = Math.max(groupedXData[groupedXData.length - 1], xAxis.max);\n }\n xAxis.dataMax = Math.max(groupedXData[groupedXData.length - 1], xAxis.dataMax);\n }\n }\n /**\n * @private\n */\n function anchorPoints(series, groupedXData, xMax) {\n var options = series.options,\n dataGroupingOptions = options.dataGrouping,\n totalRange = (series.currentDataGrouping && series.currentDataGrouping.gapSize);\n var i;\n // DataGrouping x-coordinates.\n if (dataGroupingOptions && series.xData && totalRange && series.groupMap) {\n var groupedDataLength = groupedXData.length - 1,\n anchor = dataGroupingOptions.anchor,\n firstAnchor = pick(dataGroupingOptions.firstAnchor,\n anchor),\n lastAnchor = pick(dataGroupingOptions.lastAnchor,\n anchor);\n // Anchor points that are not extremes.\n if (anchor && anchor !== 'start') {\n var shiftInterval = (totalRange *\n { middle: 0.5,\n end: 1 }[anchor]);\n i = groupedXData.length - 1;\n while (i-- && i > 0) {\n groupedXData[i] += shiftInterval;\n }\n }\n // Change the first point position, but only when it is\n // the first point in the data set not in the current zoom.\n if (firstAnchor &&\n firstAnchor !== 'start' &&\n series.xData[0] >= groupedXData[0]) {\n var groupStart = series.groupMap[0].start,\n groupLength = series.groupMap[0].length;\n var firstGroupstEnd = void 0;\n if (isNumber(groupStart) && isNumber(groupLength)) {\n firstGroupstEnd = groupStart + (groupLength - 1);\n }\n groupedXData[0] = {\n middle: groupedXData[0] + 0.5 * totalRange,\n end: groupedXData[0] + totalRange,\n firstPoint: series.xData[0],\n lastPoint: firstGroupstEnd && series.xData[firstGroupstEnd]\n }[firstAnchor];\n }\n // Change the last point position but only when it is\n // the last point in the data set not in the current zoom.\n if (lastAnchor &&\n lastAnchor !== 'start' &&\n totalRange &&\n groupedXData[groupedDataLength] >= xMax - totalRange) {\n var lastGroupStart = series.groupMap[series.groupMap.length - 1].start;\n groupedXData[groupedDataLength] = {\n middle: groupedXData[groupedDataLength] + 0.5 * totalRange,\n end: groupedXData[groupedDataLength] + totalRange,\n firstPoint: lastGroupStart && series.xData[lastGroupStart],\n lastPoint: series.xData[series.xData.length - 1]\n }[lastAnchor];\n }\n }\n }\n /**\n * For the processed data, calculate the grouped data if needed.\n *\n * @private\n * @function Highcharts.Series#applyGrouping\n */\n function applyGrouping(hasExtremesChanged) {\n var series = this,\n chart = series.chart,\n options = series.options,\n dataGroupingOptions = options.dataGrouping,\n groupingEnabled = series.allowDG !== false && dataGroupingOptions &&\n pick(dataGroupingOptions.enabled,\n chart.options.isStock),\n visible = (series.visible || !chart.options.chart.ignoreHiddenSeries),\n lastDataGrouping = this.currentDataGrouping;\n var currentDataGrouping,\n croppedData,\n revertRequireSorting = false;\n // Data needs to be sorted for dataGrouping\n if (groupingEnabled && !series.requireSorting) {\n series.requireSorting = revertRequireSorting = true;\n }\n // Skip if skipDataGrouping method returns false or if grouping is disabled\n // (in that order).\n var skip = skipDataGrouping(series,\n hasExtremesChanged) === false || !groupingEnabled;\n // Revert original requireSorting value if changed\n if (revertRequireSorting) {\n series.requireSorting = false;\n }\n if (!skip) {\n series.destroyGroupedData();\n var processedXData = dataGroupingOptions.groupAll ?\n series.xData :\n series.processedXData,\n processedYData = dataGroupingOptions.groupAll ?\n series.yData :\n series.processedYData,\n plotSizeX = chart.plotSizeX,\n xAxis = series.xAxis,\n ordinal = xAxis.options.ordinal,\n groupPixelWidth = series.groupPixelWidth;\n var i = void 0,\n hasGroupedData = void 0;\n // Execute grouping if the amount of points is greater than the limit\n // defined in groupPixelWidth\n if (groupPixelWidth &&\n processedXData &&\n processedXData.length &&\n plotSizeX) {\n hasGroupedData = true;\n // Force recreation of point instances in series.translate, #5699\n series.isDirty = true;\n series.points = null; // #6709\n var extremes = xAxis.getExtremes(),\n xMin = extremes.min,\n xMax = extremes.max,\n groupIntervalFactor = (ordinal &&\n xAxis.ordinal &&\n xAxis.ordinal.getGroupIntervalFactor(xMin,\n xMax,\n series)) || 1,\n interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) *\n groupIntervalFactor,\n groupPositions = xAxis.getTimeTicks(DateTimeAxis.Additions.prototype.normalizeTimeTickInterval(interval,\n dataGroupingOptions.units ||\n DataGroupingDefaults.units), \n // Processed data may extend beyond axis (#4907)\n Math.min(xMin,\n processedXData[0]),\n Math.max(xMax,\n processedXData[processedXData.length - 1]),\n xAxis.options.startOfWeek,\n processedXData,\n series.closestPointRange),\n groupedData = seriesProto.groupData.apply(series,\n [\n processedXData,\n processedYData,\n groupPositions,\n dataGroupingOptions.approximation\n ]);\n var groupedXData = groupedData.groupedXData,\n groupedYData = groupedData.groupedYData,\n gapSize = 0;\n // The smoothed option is deprecated, instead, there is a fallback\n // to the new anchoring mechanism. #12455.\n if (dataGroupingOptions &&\n dataGroupingOptions.smoothed &&\n groupedXData.length) {\n dataGroupingOptions.firstAnchor = 'firstPoint';\n dataGroupingOptions.anchor = 'middle';\n dataGroupingOptions.lastAnchor = 'lastPoint';\n error(32, false, chart, {\n 'dataGrouping.smoothed': 'use dataGrouping.anchor'\n });\n }\n anchorPoints(series, groupedXData, xMax);\n // Record what data grouping values were used\n for (i = 1; i < groupPositions.length; i++) {\n // The grouped gapSize needs to be the largest distance between\n // the group to capture varying group sizes like months or DST\n // crossing (#10000). Also check that the gap is not at the\n // start of a segment.\n if (!groupPositions.info.segmentStarts ||\n groupPositions.info.segmentStarts.indexOf(i) === -1) {\n gapSize = Math.max(groupPositions[i] - groupPositions[i - 1], gapSize);\n }\n }\n currentDataGrouping = groupPositions.info;\n currentDataGrouping.gapSize = gapSize;\n series.closestPointRange = groupPositions.info.totalRange;\n series.groupMap = groupedData.groupMap;\n if (visible) {\n adjustExtremes(xAxis, groupedXData);\n }\n // We calculated all group positions but we should render\n // only the ones within the visible range\n if (dataGroupingOptions.groupAll) {\n // Keep the reference to all grouped points\n // for further calculation (eg. heikinashi).\n series.allGroupedData = groupedYData;\n croppedData = series.cropData(groupedXData, groupedYData, xAxis.min, xAxis.max, 1 // Ordinal xAxis will remove left-most points otherwise\n );\n groupedXData = croppedData.xData;\n groupedYData = croppedData.yData;\n series.cropStart = croppedData.start; // #15005\n }\n // Set series props\n series.processedXData = groupedXData;\n series.processedYData = groupedYData;\n }\n else {\n series.groupMap = null;\n }\n series.hasGroupedData = hasGroupedData;\n series.currentDataGrouping = currentDataGrouping;\n series.preventGraphAnimation =\n (lastDataGrouping && lastDataGrouping.totalRange) !==\n (currentDataGrouping && currentDataGrouping.totalRange);\n }\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n var PointClass = SeriesClass.prototype.pointClass;\n if (composedMembers.indexOf(PointClass) === -1) {\n composedMembers.push(PointClass);\n // Override point prototype to throw a warning when trying to update\n // grouped points.\n addEvent(PointClass, 'update', function () {\n if (this.dataGroup) {\n error(24, false, this.series.chart);\n return false;\n }\n });\n }\n if (composedMembers.indexOf(SeriesClass) === -1) {\n composedMembers.push(SeriesClass);\n addEvent(SeriesClass, 'afterSetOptions', onAfterSetOptions);\n addEvent(SeriesClass, 'destroy', destroyGroupedData);\n extend(SeriesClass.prototype, {\n applyGrouping: applyGrouping,\n destroyGroupedData: destroyGroupedData,\n generatePoints: generatePoints,\n getDGApproximation: getDGApproximation,\n groupData: groupData\n });\n }\n }\n /**\n * Destroy the grouped data points. #622, #740\n * @private\n */\n function destroyGroupedData() {\n // Clear previous groups\n if (this.groupedData) {\n this.groupedData.forEach(function (point, i) {\n if (point) {\n this.groupedData[i] = point.destroy ?\n point.destroy() : null;\n }\n }, this);\n // Clears all:\n // - `this.groupedData`\n // - `this.points`\n // - `preserve` object in series.update()\n this.groupedData.length = 0;\n }\n }\n /**\n * Override the generatePoints method by adding a reference to grouped data\n * @private\n */\n function generatePoints() {\n baseGeneratePoints.apply(this);\n // Record grouped data in order to let it be destroyed the next time\n // processData runs\n this.destroyGroupedData(); // #622\n this.groupedData = this.hasGroupedData ? this.points : null;\n }\n /**\n * Set default approximations to the prototypes if present. Properties are\n * inherited down. Can be overridden for individual series types.\n * @private\n */\n function getDGApproximation() {\n if (this.is('arearange')) {\n return 'range';\n }\n if (this.is('ohlc')) {\n return 'ohlc';\n }\n if (this.is('hlc')) {\n return 'hlc';\n }\n if (this.is('column')) {\n return 'sum';\n }\n return 'average';\n }\n /**\n * Highcharts Stock only. Takes parallel arrays of x and y data and groups the\n * data into intervals defined by groupPositions, a collection of starting x\n * values for each group.\n *\n * @product highstock\n *\n * @function Highcharts.Series#groupData\n * @param {Array} xData\n * Parallel array of x data.\n * @param {Array<(number|null|undefined)>|Array>} yData\n * Parallel array of y data.\n * @param {Array} groupPositions\n * Group positions.\n * @param {string|Function} [approximation]\n * Approximation to use.\n * @return {Highcharts.DataGroupingResultObject}\n * Mapped groups.\n */\n function groupData(xData, yData, groupPositions, approximation) {\n var series = this,\n data = series.data,\n dataOptions = series.options && series.options.data,\n groupedXData = [],\n groupedYData = [],\n groupMap = [],\n dataLength = xData.length, \n // when grouping the fake extended axis for panning,\n // we don't need to consider y\n handleYData = !!yData,\n values = [],\n pointArrayMap = series.pointArrayMap,\n pointArrayMapLength = pointArrayMap && pointArrayMap.length,\n extendedPointArrayMap = ['x'].concat(pointArrayMap || ['y']),\n groupAll = (this.options.dataGrouping &&\n this.options.dataGrouping.groupAll);\n var pointX,\n pointY,\n groupedY,\n pos = 0,\n start = 0;\n var approximationFn = (typeof approximation === 'function' ?\n approximation :\n approximation && ApproximationRegistry[approximation] ?\n ApproximationRegistry[approximation] :\n ApproximationRegistry[(series.getDGApproximation && series.getDGApproximation() ||\n 'average')]);\n // Calculate values array size from pointArrayMap length\n if (pointArrayMapLength) {\n var len = pointArrayMap.length;\n while (len--) {\n values.push([]);\n }\n }\n else {\n values.push([]);\n }\n var valuesLen = pointArrayMapLength || 1;\n for (var i = 0; i <= dataLength; i++) {\n // Start with the first point within the X axis range (#2696)\n if (xData[i] < groupPositions[0]) {\n continue; // with next point\n }\n // when a new group is entered, summarize and initialize\n // the previous group\n while ((typeof groupPositions[pos + 1] !== 'undefined' &&\n xData[i] >= groupPositions[pos + 1]) ||\n i === dataLength) { // get the last group\n // get group x and y\n pointX = groupPositions[pos];\n series.dataGroupInfo = {\n start: groupAll ? start : (series.cropStart + start),\n length: values[0].length\n };\n groupedY = approximationFn.apply(series, values);\n // By default, let options of the first grouped point be passed over\n // to the grouped point. This allows preserving properties like\n // `name` and `color` or custom properties. Implementers can\n // override this from the approximation function, where they can\n // write custom options to `this.dataGroupInfo.options`.\n if (series.pointClass && !defined(series.dataGroupInfo.options)) {\n // Convert numbers and arrays into objects\n series.dataGroupInfo.options = merge(series.pointClass.prototype\n .optionsToObject.call({ series: series }, series.options.data[series.cropStart + start]));\n // Make sure the raw data (x, y, open, high etc) is not copied\n // over and overwriting approximated data.\n extendedPointArrayMap.forEach(function (key) {\n delete series.dataGroupInfo.options[key];\n });\n }\n // push the grouped data\n if (typeof groupedY !== 'undefined') {\n groupedXData.push(pointX);\n groupedYData.push(groupedY);\n groupMap.push(series.dataGroupInfo);\n }\n // reset the aggregate arrays\n start = i;\n for (var j = 0; j < valuesLen; j++) {\n values[j].length = 0; // faster than values[j] = []\n values[j].hasNulls = false;\n }\n // Advance on the group positions\n pos += 1;\n // don't loop beyond the last group\n if (i === dataLength) {\n break;\n }\n }\n // break out\n if (i === dataLength) {\n break;\n }\n // for each raw data point, push it to an array that contains all values\n // for this specific group\n if (pointArrayMap) {\n var index = (series.options.dataGrouping &&\n series.options.dataGrouping.groupAll ?\n i : series.cropStart + i),\n point = (data && data[index]) ||\n series.pointClass.prototype.applyOptions.apply({\n series: series\n },\n [dataOptions[index]]);\n var val = void 0;\n for (var j = 0; j < pointArrayMapLength; j++) {\n val = point[pointArrayMap[j]];\n if (isNumber(val)) {\n values[j].push(val);\n }\n else if (val === null) {\n values[j].hasNulls = true;\n }\n }\n }\n else {\n pointY = handleYData ? yData[i] : null;\n if (isNumber(pointY)) {\n values[0].push(pointY);\n }\n else if (pointY === null) {\n values[0].hasNulls = true;\n }\n }\n }\n return {\n groupedXData: groupedXData,\n groupedYData: groupedYData,\n groupMap: groupMap\n };\n }\n /**\n * Handle default options for data grouping. This must be set at runtime because\n * some series types are defined after this.\n * @private\n */\n function onAfterSetOptions(e) {\n var options = e.options,\n type = this.type,\n plotOptions = this.chart.options.plotOptions, \n // External series, for example technical indicators should also inherit\n // commonOptions which are not available outside this module\n baseOptions = (this.useCommonDataGrouping &&\n DataGroupingDefaults.common),\n seriesSpecific = DataGroupingDefaults.seriesSpecific;\n var defaultOptions = D.defaultOptions.plotOptions[type].dataGrouping;\n if (plotOptions && (seriesSpecific[type] || baseOptions)) { // #1284\n var rangeSelector = this.chart.rangeSelector;\n if (!defaultOptions) {\n defaultOptions = merge(DataGroupingDefaults.common, seriesSpecific[type]);\n }\n options.dataGrouping = merge(baseOptions, defaultOptions, plotOptions.series && plotOptions.series.dataGrouping, // #1228\n // Set by the StockChart constructor:\n plotOptions[type].dataGrouping, this.userOptions.dataGrouping, !options.isInternal &&\n rangeSelector &&\n isNumber(rangeSelector.selected) &&\n rangeSelector.buttonOptions[rangeSelector.selected].dataGrouping);\n }\n }\n /**\n * @private\n */\n function skipDataGrouping(series, force) {\n return !(series.isCartesian &&\n !series.isDirty &&\n !series.xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force);\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingSeriesComposition = {\n compose: compose,\n groupData: groupData\n };\n\n return DataGroupingSeriesComposition;\n });\n _registerModule(_modules, 'Extensions/DataGrouping/DataGrouping.js', [_modules['Extensions/DataGrouping/DataGroupingAxisComposition.js'], _modules['Extensions/DataGrouping/DataGroupingDefaults.js'], _modules['Extensions/DataGrouping/DataGroupingSeriesComposition.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (DataGroupingAxisComposition, DataGroupingDefaults, DataGroupingSeriesComposition, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var addEvent = U.addEvent,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(AxisClass, SeriesClass, TooltipClass) {\n DataGroupingAxisComposition.compose(AxisClass);\n DataGroupingSeriesComposition.compose(SeriesClass);\n if (composedMembers.indexOf(TooltipClass) === -1) {\n composedMembers.push(TooltipClass);\n addEvent(TooltipClass, 'headerFormatter', onTooltipHeaderFormatter);\n }\n }\n /**\n * Extend the original method, make the tooltip's header reflect the grouped\n * range.\n * @private\n */\n function onTooltipHeaderFormatter(e) {\n var chart = this.chart,\n time = chart.time,\n labelConfig = e.labelConfig,\n series = labelConfig.series,\n options = series.options,\n tooltipOptions = series.tooltipOptions,\n dataGroupingOptions = options.dataGrouping,\n xAxis = series.xAxis;\n var xDateFormat = tooltipOptions.xDateFormat,\n xDateFormatEnd,\n currentDataGrouping,\n dateTimeLabelFormats,\n labelFormats,\n formattedKey,\n formatString = tooltipOptions[e.isFooter ? 'footerFormat' : 'headerFormat'];\n // apply only to grouped series\n if (xAxis &&\n xAxis.options.type === 'datetime' &&\n dataGroupingOptions &&\n isNumber(labelConfig.key)) {\n // set variables\n currentDataGrouping = series.currentDataGrouping;\n dateTimeLabelFormats = dataGroupingOptions.dateTimeLabelFormats ||\n // Fallback to commonOptions (#9693)\n DataGroupingDefaults.common.dateTimeLabelFormats;\n // if we have grouped data, use the grouping information to get the\n // right format\n if (currentDataGrouping) {\n labelFormats =\n dateTimeLabelFormats[currentDataGrouping.unitName];\n if (currentDataGrouping.count === 1) {\n xDateFormat = labelFormats[0];\n }\n else {\n xDateFormat = labelFormats[1];\n xDateFormatEnd = labelFormats[2];\n }\n // if not grouped, and we don't have set the xDateFormat option, get the\n // best fit, so if the least distance between points is one minute, show\n // it, but if the least distance is one day, skip hours and minutes etc.\n }\n else if (!xDateFormat && dateTimeLabelFormats && xAxis.dateTime) {\n xDateFormat = xAxis.dateTime.getXDateFormat(labelConfig.x, tooltipOptions.dateTimeLabelFormats);\n }\n // now format the key\n formattedKey = time.dateFormat(xDateFormat, labelConfig.key);\n if (xDateFormatEnd) {\n formattedKey += time.dateFormat(xDateFormatEnd, labelConfig.key + currentDataGrouping.totalRange - 1);\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n // return the replaced format\n e.text = format(formatString, {\n point: extend(labelConfig.point, { key: formattedKey }),\n series: series\n }, chart);\n e.preventDefault();\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var DataGroupingComposition = {\n compose: compose,\n groupData: DataGroupingSeriesComposition.groupData\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"average\"|\"averages\"|\"open\"|\"high\"|\"low\"|\"close\"|\"sum\"} Highcharts.DataGroupingApproximationValue\n */\n /**\n * The position of the point inside the group.\n *\n * @typedef {\"start\"|\"middle\"|\"end\"} Highcharts.DataGroupingAnchor\n */\n /**\n * The position of the first or last point in the series inside the group.\n *\n * @typedef {\"start\"|\"middle\"|\"end\"|\"firstPoint\"|\"lastPoint\"} Highcharts.DataGroupingAnchorExtremes\n */\n /**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingInfoObject\n */ /**\n * @name Highcharts.DataGroupingInfoObject#length\n * @type {number}\n */ /**\n * @name Highcharts.DataGroupingInfoObject#options\n * @type {Highcharts.SeriesOptionsType|undefined}\n */ /**\n * @name Highcharts.DataGroupingInfoObject#start\n * @type {number}\n */\n /**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingResultObject\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupedXData\n * @type {Array}\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupedYData\n * @type {Array<(number|null|undefined)>|Array>}\n */ /**\n * @name Highcharts.DataGroupingResultObject#groupMap\n * @type {Array}\n */\n /**\n * Highcharts Stock only. If a point object is created by data\n * grouping, it doesn't reflect actual points in the raw\n * data. In this case, the `dataGroup` property holds\n * information that points back to the raw data.\n *\n * - `dataGroup.start` is the index of the first raw data\n * point in the group.\n *\n * - `dataGroup.length` is the amount of points in the\n * group.\n *\n * @sample stock/members/point-datagroup\n * Click to inspect raw data points\n *\n * @product highstock\n *\n * @name Highcharts.Point#dataGroup\n * @type {Highcharts.DataGroupingInfoObject|undefined}\n */\n (''); // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Data grouping is the concept of sampling the data values into larger\n * blocks in order to ease readability and increase performance of the\n * JavaScript charts. Highcharts Stock by default applies data grouping when\n * the points become closer than a certain pixel value, determined by\n * the `groupPixelWidth` option.\n *\n * If data grouping is applied, the grouping information of grouped\n * points can be read from the [Point.dataGroup](\n * /class-reference/Highcharts.Point#dataGroup). If point options other than\n * the data itself are set, for example `name` or `color` or custom properties,\n * the grouping logic doesn't know how to group it. In this case the options of\n * the first point instance are copied over to the group point. This can be\n * altered through a custom `approximation` callback function.\n *\n * @declare Highcharts.DataGroupingOptionsObject\n * @product highstock\n * @requires product:highstock\n * @requires module:modules/datagrouping\n * @apioption plotOptions.series.dataGrouping\n */\n /**\n * Specifies how the points should be located on the X axis inside the group.\n * Points that are extremes can be set separately. Available options:\n *\n * - `start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * - `middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * - `end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-anchor\n * Changing the point x-coordinate inside the group.\n *\n * @see [dataGrouping.firstAnchor](#plotOptions.series.dataGrouping.firstAnchor)\n * @see [dataGrouping.lastAnchor](#plotOptions.series.dataGrouping.lastAnchor)\n *\n * @type {Highcharts.DataGroupingAnchor}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.anchor\n */\n /**\n * The method of approximation inside a group. When for example 30 days\n * are grouped into one month, this determines what value should represent\n * the group. Possible values are \"average\", \"averages\", \"open\", \"high\",\n * \"low\", \"close\" and \"sum\". For OHLC and candlestick series the approximation\n * is \"ohlc\" by default, which finds the open, high, low and close values\n * within all the grouped data. For ranges, the approximation is \"range\",\n * which finds the low and high values. For multi-dimensional data,\n * like ranges and OHLC, \"averages\" will compute the average for each\n * dimension.\n *\n * Custom aggregate methods can be added by assigning a callback function\n * as the approximation. This function takes a numeric array as the\n * argument and should return a single numeric value or `null`. Note\n * that the numeric array will never contain null values, only true\n * numbers. Instead, if null values are present in the raw data, the\n * numeric array will have an `.hasNulls` property set to `true`. For\n * single-value data sets the data is available in the first argument\n * of the callback function. For OHLC data sets, all the open values\n * are in the first argument, all high values in the second etc.\n *\n * Since v4.2.7, grouping meta data is available in the approximation\n * callback from `this.dataGroupInfo`. It can be used to extract information\n * from the raw data.\n *\n * Defaults to `average` for line-type series, `sum` for columns, `range`\n * for range series, `hlc` for HLC, and `ohlc` for OHLC and candlestick.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-approximation\n * Approximation callback with custom data\n * @sample {highstock} stock/plotoptions/series-datagrouping-simple-approximation\n * Simple approximation demo\n *\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @apioption plotOptions.series.dataGrouping.approximation\n */\n /**\n * Datetime formats for the header of the tooltip in a stock chart.\n * The format can vary within a chart depending on the currently selected\n * time range and the current data grouping.\n *\n * The default formats are:\n * ```js\n * {\n * millisecond: [\n * '%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'\n * ],\n * second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],\n * minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],\n * hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],\n * day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],\n * week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],\n * month: ['%B %Y', '%B', '-%B %Y'],\n * year: ['%Y', '%Y', '-%Y']\n * }\n * ```\n *\n * For each of these array definitions, the first item is the format\n * used when the active time span is one unit. For instance, if the\n * current data applies to one week, the first item of the week array\n * is used. The second and third items are used when the active time\n * span is more than two units. For instance, if the current data applies\n * to two weeks, the second and third item of the week array are used,\n * and applied to the start and end date of the time span.\n *\n * @type {Object}\n * @apioption plotOptions.series.dataGrouping.dateTimeLabelFormats\n */\n /**\n * Enable or disable data grouping.\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.dataGrouping.enabled\n */\n /**\n * Specifies how the first grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n * Applying first and last anchor.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.firstAnchor\n */\n /**\n * When data grouping is forced, it runs no matter how small the intervals\n * are. This can be handy for example when the sum should be calculated\n * for values appearing at random times within each hour.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataGrouping.forced\n */\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. If multiple series with different group pixel widths\n * are drawn on the same x axis, all series will take the greatest width.\n * For example, line series have 2px default group width, while column\n * series have 10px. If combined, both the line and the column will\n * have 10px by default.\n *\n * @type {number}\n * @default 2\n * @apioption plotOptions.series.dataGrouping.groupPixelWidth\n */\n /**\n * By default only points within the visible range are grouped. Enabling this\n * option will force data grouping to calculate all grouped points for a given\n * dataset. That option prevents for example a column series from calculating\n * a grouped point partially. The effect is similar to\n * [Series.getExtremesFromAll](#plotOptions.series.getExtremesFromAll) but does\n * not affect yAxis extremes.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-groupall/\n * Two series with the same data but different groupAll setting\n *\n * @type {boolean}\n * @default false\n * @since 6.1.0\n * @apioption plotOptions.series.dataGrouping.groupAll\n */\n /**\n * Specifies how the last grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n * Applying first and last anchor.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-last-anchor\n * Applying the last anchor in the chart with live data.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default start\n * @apioption plotOptions.series.dataGrouping.lastAnchor\n */\n /**\n * Normally, a group is indexed by the start of that group, so for example\n * when 30 daily values are grouped into one month, that month's x value\n * will be the 1st of the month. This apparently shifts the data to\n * the left. When the smoothed option is true, this is compensated for.\n * The data is shifted to the middle of the group, and min and max\n * values are preserved. Internally, this is used in the Navigator series.\n *\n * @type {boolean}\n * @default false\n * @deprecated\n * @apioption plotOptions.series.dataGrouping.smoothed\n */\n /**\n * An array determining what time intervals the data is allowed to be\n * grouped to. Each array item is an array where the first value is\n * the time unit and the second value another array of allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1]\n * ], [\n * 'week',\n * [1]\n * ], [\n * 'month',\n * [1, 3, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array|null)>>}\n * @apioption plotOptions.series.dataGrouping.units\n */\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. Defaults to `10`.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-grouppixelwidth/\n * Two series with the same data density but different groupPixelWidth\n *\n * @type {number}\n * @default 10\n * @apioption plotOptions.column.dataGrouping.groupPixelWidth\n */\n ''; // required by JSDoc parsing\n\n return DataGroupingComposition;\n });\n _registerModule(_modules, 'masters/modules/datagrouping.src.js', [_modules['Core/Globals.js'], _modules['Extensions/DataGrouping/ApproximationDefaults.js'], _modules['Extensions/DataGrouping/ApproximationRegistry.js'], _modules['Extensions/DataGrouping/DataGrouping.js']], function (Highcharts, ApproximationDefaults, ApproximationRegistry, DataGrouping) {\n\n var G = Highcharts;\n G.dataGrouping = {\n approximationDefaults: ApproximationDefaults,\n approximations: ApproximationRegistry\n };\n DataGrouping.compose(G.Axis, G.Series, G.Tooltip);\n\n });\n _registerModule(_modules, 'Series/DataModifyComposition.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (Axis, Point, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var pointTooltipFormatter = Point.prototype.tooltipFormatter;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n correctFloat = U.correctFloat,\n defined = U.defined,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var DataModifyComposition;\n (function (DataModifyComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extends the series, axis and point classes with\n * compare and cumulative support.\n *\n * @private\n *\n * @param SeriesClass\n * Series class to use.\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param PointClass\n * Point class to use.\n */\n function compose(SeriesClass, AxisClass, PointClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto = SeriesClass.prototype;\n seriesProto.setCompare = seriesSetCompare;\n seriesProto.setCumulative = seriesSetCumulative;\n addEvent(SeriesClass, 'afterInit', afterInit);\n addEvent(SeriesClass, 'afterGetExtremes', afterGetExtremes);\n addEvent(SeriesClass, 'afterProcessData', afterProcessData);\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n var axisProto = AxisClass.prototype;\n axisProto.setCompare = axisSetCompare;\n axisProto.setModifier = setModifier;\n axisProto.setCumulative = axisSetCumulative;\n }\n if (composedClasses.indexOf(PointClass) === -1) {\n composedClasses.push(PointClass);\n var pointProto = PointClass.prototype;\n pointProto.tooltipFormatter = tooltipFormatter;\n }\n return SeriesClass;\n }\n DataModifyComposition.compose = compose;\n /* ********************************************************************** *\n * Start shared compare and cumulative logic *\n * ********************************************************************** */\n /**\n * Shared code for the axis.setCompare() and the axis.setCumulative()\n * methods. Inits the 'compare' or the 'cumulative' mode.\n * @private\n */\n function setModifier(mode, modeState, redraw) {\n if (!this.isXAxis) {\n this.series.forEach(function (series) {\n if (mode === 'compare' &&\n typeof modeState !== 'boolean') {\n series.setCompare(modeState, false);\n }\n else if (mode === 'cumulative' &&\n !isString(modeState)) {\n series.setCumulative(modeState, false);\n }\n });\n if (pick(redraw, true)) {\n this.chart.redraw();\n }\n }\n }\n /**\n * Extend the tooltip formatter by adding support for the point.change\n * variable as well as the changeDecimals option.\n *\n * @ignore\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n */\n function tooltipFormatter(pointFormat) {\n var point = this, numberFormatter = point.series.chart.numberFormatter, replace = function (value) {\n pointFormat = pointFormat.replace('{point.' + value + '}', (point[value] > 0 && value === 'change' ? '+' : '') +\n numberFormatter(point[value], pick(point.series.tooltipOptions.changeDecimals, 2)));\n };\n if (defined(point.change)) {\n replace('change');\n }\n if (defined(point.cumulativeSum)) {\n replace('cumulativeSum');\n }\n return pointTooltipFormatter.apply(this, [pointFormat]);\n }\n /**\n * Extend series.init by adding a methods to modify the y values used\n * for plotting on the y axis. For compare mode, this method is called both\n * from the axis when finding dataMin and dataMax,\n * and from the series.translate method.\n *\n * @ignore\n * @function Highcharts.Series#init\n */\n function afterInit() {\n var compare = this.options.compare;\n var dataModify;\n if (compare === 'percent' ||\n compare === 'value' ||\n this.options.cumulative) {\n dataModify = new Additions(this);\n if (compare === 'percent' || compare === 'value') {\n // Set comparison mode\n dataModify.initCompare(compare);\n }\n else {\n // Set Cumulative Sum mode\n dataModify.initCumulative();\n }\n }\n this.dataModify = dataModify;\n }\n /**\n * Adjust the extremes (compare and cumulative modify the data).\n * @private\n */\n function afterGetExtremes(e) {\n var dataExtremes = e.dataExtremes,\n activeYData = dataExtremes.activeYData;\n if (this.dataModify && dataExtremes) {\n var extremes = void 0;\n if (this.options.compare) {\n extremes = [\n this.dataModify.modifyValue(dataExtremes.dataMin),\n this.dataModify.modifyValue(dataExtremes.dataMax)\n ];\n }\n else if (this.options.cumulative &&\n isArray(activeYData) &&\n // If only one y visible, sum doesn't change\n // so no need to change extremes\n activeYData.length >= 2) {\n extremes = Additions.getCumulativeExtremes(activeYData);\n }\n if (extremes) {\n dataExtremes.dataMin = arrayMin(extremes);\n dataExtremes.dataMax = arrayMax(extremes);\n }\n }\n }\n /* ********************************************************************** *\n * End shared compare and cumulative logic *\n * ********************************************************************** */\n /* ********************************************************************** *\n * Start value compare logic *\n * ********************************************************************** */\n /**\n * Highcharts Stock only. Set the\n * [compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n * mode of the series after render time.\n * In most cases it is more useful running\n * {@link Axis#setCompare} on the X axis to update all its series.\n *\n * @function Highcharts.Series#setCompare\n *\n * @param {string|null} [compare]\n * Can be one of `undefined` (default), `null`, `\"percent\"`\n * or `\"value\"`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function seriesSetCompare(compare, redraw) {\n // Survive to export, #5485 (and for options generally)\n this.options.compare = this.userOptions.compare = compare;\n // Fire series.init() that will set or delete series.dataModify\n this.update({}, pick(redraw, true));\n if (this.dataModify && (compare === 'value' || compare === 'percent')) {\n this.dataModify.initCompare(compare);\n }\n else {\n // When disabling, clear the points\n this.points.forEach(function (point) {\n delete point.change;\n });\n }\n }\n /**\n * Extend series.processData by finding the first y value in the plot area,\n * used for comparing the following values\n *\n * @ignore\n * @function Highcharts.Series#processData\n */\n function afterProcessData() {\n var series = this;\n if (series.xAxis && // not pies\n series.processedYData &&\n series.dataModify) {\n var processedXData = series.processedXData,\n processedYData = series.processedYData,\n length_1 = processedYData.length,\n compareStart = series.options.compareStart === true ? 0 : 1;\n var keyIndex = -1,\n i = void 0;\n // For series with more than one value (range, OHLC etc), compare\n // against close or the pointValKey (#4922, #3112, #9854)\n if (series.pointArrayMap) {\n keyIndex = series.pointArrayMap.indexOf(series.options.pointValKey || series.pointValKey || 'y');\n }\n // find the first value for comparison\n for (i = 0; i < length_1 - compareStart; i++) {\n var compareValue = processedYData[i] && keyIndex > -1 ?\n processedYData[i][keyIndex] : processedYData[i];\n if (isNumber(compareValue) &&\n compareValue !== 0 &&\n processedXData[i + compareStart] >= (series.xAxis.min || 0)) {\n series.dataModify.compareValue = compareValue;\n break;\n }\n }\n }\n }\n /**\n * Highcharts Stock only. Set the compare mode on all series\n * belonging to a Y axis.\n *\n * @see [plotOptions.series.compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n *\n * @sample stock/members/axis-setcompare/\n * Set compare\n *\n * @function Highcharts.Axis#setCompare\n *\n * @param {string|null} [compare]\n * The compare mode. Can be one of `undefined` (default), `null`,\n * `\"value\"` or `\"percent\"`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function axisSetCompare(compare, redraw) {\n this.setModifier('compare', compare, redraw);\n }\n /* ********************************************************************** *\n * End value compare logic *\n * ********************************************************************** */\n /* ********************************************************************** *\n * Start Cumulative Sum logic, author: Rafal Sebestjanski *\n * ********************************************************************** */\n /**\n * Highcharts Stock only. Set the\n * [cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n * mode of the series after render time.\n * In most cases it is more useful running\n * {@link Axis#setCumulative} on the Y axis to update all its series.\n *\n * @function Highcharts.Series#setCumulative\n *\n * @param {boolean} [cumulative=false]\n * Either enable or disable Cumulative Sum mode.\n * Can be one of `false` (default) or `true`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function seriesSetCumulative(cumulative, redraw) {\n // Set default value to false\n cumulative = pick(cumulative, false);\n // Survive to export, #5485 (and for options generally)\n this.options.cumulative = this.userOptions.cumulative = cumulative;\n // Fire series.init() that will set or delete series.dataModify\n this.update({}, pick(redraw, true));\n // If should, turn on the Cumulative Sum mode\n if (this.dataModify) {\n this.dataModify.initCumulative();\n }\n else {\n // When disabling, clear the points\n this.points.forEach(function (point) {\n delete point.cumulativeSum;\n });\n }\n }\n /**\n * Highcharts Stock only. Set the cumulative mode on all series\n * belonging to a Y axis.\n *\n * @see [plotOptions.series.cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n *\n * @sample stock/members/axis-setcumulative/\n * Set cumulative\n *\n * @function Highcharts.Axis#setCumulative\n *\n * @param {boolean} [cumulative]\n * Whether to disable or enable the cumulative mode.\n * Can be one of `undefined` (default, treated as `false`),\n * `false` or `true`.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or to wait for a later call to\n * {@link Chart#redraw}.\n */\n function axisSetCumulative(cumulative, redraw) {\n this.setModifier('cumulative', cumulative, redraw);\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Additions(series) {\n this.series = series;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n Additions.prototype.modifyValue = function () {\n return 0;\n };\n /**\n * @ignore\n * @function Highcharts.Series#getCumulativeExtremes\n *\n * @param {Array} [activeYData]\n * An array cointaining all the points' y values\n * in a visible range.\n */\n Additions.getCumulativeExtremes = function (activeYData) {\n var cumulativeDataMin = Infinity,\n cumulativeDataMax = -Infinity;\n activeYData.reduce(function (prev, cur) {\n var sum = prev + cur;\n cumulativeDataMin = Math.min(cumulativeDataMin, sum, prev);\n cumulativeDataMax = Math.max(cumulativeDataMax, sum, prev);\n return sum;\n });\n return [cumulativeDataMin, cumulativeDataMax];\n };\n /**\n * @ignore\n * @function Highcharts.Series#initCompare\n *\n * @param {string} [compare]\n * Can be one of `\"percent\"` or `\"value\"`.\n */\n Additions.prototype.initCompare = function (compare) {\n // Set the modifyValue method\n this.modifyValue = function (value, index) {\n if (value === null) {\n value = 0;\n }\n var compareValue = this.compareValue;\n if (typeof value !== 'undefined' &&\n typeof compareValue !== 'undefined') { // #2601, #5814\n // Get the modified value\n if (compare === 'value') {\n value -= compareValue;\n // Compare percent\n }\n else {\n var compareBase = this.series.options.compareBase;\n value = 100 * (value / compareValue) -\n (compareBase === 100 ? 0 : 100);\n }\n // record for tooltip etc.\n if (typeof index !== 'undefined') {\n var point = this.series.points[index];\n if (point) {\n point.change = value;\n }\n }\n return value;\n }\n return 0;\n };\n };\n /**\n * @ignore\n * @function Highcharts.Series#initCumulative\n */\n Additions.prototype.initCumulative = function () {\n // Set the modifyValue method\n this.modifyValue = function (value, index) {\n if (value === null) {\n value = 0;\n }\n if (value !== void 0 && index !== void 0) {\n var prevPoint = index > 0 ?\n this.series.points[index - 1] : null;\n // Get the modified value\n if (prevPoint && prevPoint.cumulativeSum) {\n value = correctFloat(prevPoint.cumulativeSum + value);\n }\n // Record for tooltip etc.\n var point = this.series.points[index];\n if (point) {\n point.cumulativeSum = value;\n }\n return value;\n }\n return 0;\n };\n };\n return Additions;\n }());\n DataModifyComposition.Additions = Additions;\n })(DataModifyComposition || (DataModifyComposition = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Compare the values of the series against the first non-null, non-\n * zero value in the visible range. The y axis will show percentage\n * or absolute change depending on whether `compare` is set to `\"percent\"`\n * or `\"value\"`. When this is applied to multiple series, it allows\n * comparing the development of the series against each other. Adds\n * a `change` field to every point object.\n *\n * @see [compareBase](#plotOptions.series.compareBase)\n * @see [Axis.setCompare()](/class-reference/Highcharts.Axis#setCompare)\n * @see [Series.setCompare()](/class-reference/Highcharts.Series#setCompare)\n *\n * @sample {highstock} stock/plotoptions/series-compare-percent/\n * Percent\n * @sample {highstock} stock/plotoptions/series-compare-value/\n * Value\n *\n * @type {string}\n * @since 1.0.1\n * @product highstock\n * @validvalue [\"percent\", \"value\"]\n * @apioption plotOptions.series.compare\n */\n /**\n * Defines if comparison should start from the first point within the visible\n * range or should start from the first point **before** the range.\n *\n * In other words, this flag determines if first point within the visible range\n * will have 0% (`compareStart=true`) or should have been already calculated\n * according to the previous point (`compareStart=false`).\n *\n * @sample {highstock} stock/plotoptions/series-comparestart/\n * Calculate compare within visible range\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @product highstock\n * @apioption plotOptions.series.compareStart\n */\n /**\n * When [compare](#plotOptions.series.compare) is `percent`, this option\n * dictates whether to use 0 or 100 as the base of comparison.\n *\n * @sample {highstock} stock/plotoptions/series-comparebase/\n * Compare base is 100\n *\n * @type {number}\n * @default 0\n * @since 5.0.6\n * @product highstock\n * @validvalue [0, 100]\n * @apioption plotOptions.series.compareBase\n */\n /**\n * Cumulative Sum feature replaces points' values with the following formula:\n * `sum of all previous points' values + current point's value`.\n * Works only for points in a visible range.\n * Adds the `cumulativeSum` field to each point object that can be accessed\n * e.g. in the [tooltip.pointFormat](https://api.highcharts.com/highstock/tooltip.pointFormat).\n *\n * @see [Axis.setCumulative()](/class-reference/Highcharts.Axis#setCumulative)\n * @see [Series.setCumulative()](/class-reference/Highcharts.Series#setCumulative)\n *\n * @sample {highstock} stock/plotoptions/series-cumulative-sum/\n * Cumulative Sum\n *\n * @type {boolean}\n * @default false\n * @since 9.3.0\n * @product highstock\n * @apioption plotOptions.series.cumulative\n */\n ''; // keeps doclets above in transpiled file\n\n return DataModifyComposition;\n });\n _registerModule(_modules, 'Core/Axis/NavigatorAxisComposition.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isTouchDevice = H.isTouchDevice;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function onAxisInit() {\n var axis = this;\n if (!axis.navigatorAxis) {\n axis.navigatorAxis = new NavigatorAxisAdditions(axis);\n }\n }\n /**\n * For Stock charts, override selection zooming with some special features\n * because X axis zooming is already allowed by the Navigator and Range\n * selector.\n * @private\n */\n function onAxisZoom(e) {\n var axis = this,\n chart = axis.chart,\n chartOptions = chart.options,\n navigator = chartOptions.navigator,\n navigatorAxis = axis.navigatorAxis,\n pinchType = chartOptions.chart.zooming.pinchType,\n rangeSelector = chartOptions.rangeSelector,\n zoomType = chartOptions.chart.zooming.type;\n if (axis.isXAxis && ((navigator && navigator.enabled) ||\n (rangeSelector && rangeSelector.enabled))) {\n // For y only zooming, ignore the X axis completely\n if (zoomType === 'y') {\n e.zoomed = false;\n // For xy zooming, record the state of the zoom before zoom\n // selection, then when the reset button is pressed, revert to\n // this state. This should apply only if the chart is\n // initialized with a range (#6612), otherwise zoom all the way\n // out.\n }\n else if (((!isTouchDevice && zoomType === 'xy') ||\n (isTouchDevice && pinchType === 'xy')) &&\n axis.options.range) {\n var previousZoom = navigatorAxis.previousZoom;\n if (defined(e.newMin)) {\n navigatorAxis.previousZoom = [axis.min, axis.max];\n }\n else if (previousZoom) {\n e.newMin = previousZoom[0];\n e.newMax = previousZoom[1];\n navigatorAxis.previousZoom = void 0;\n }\n }\n }\n if (typeof e.zoomed !== 'undefined') {\n e.preventDefault();\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n * @class\n */\n var NavigatorAxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function NavigatorAxisAdditions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.compose = function (AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('navigatorAxis');\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'zoom', onAxisZoom);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n NavigatorAxisAdditions.prototype.destroy = function () {\n this.axis = void 0;\n };\n /**\n * Add logic to normalize the zoomed range in order to preserve the pressed\n * state of range selector buttons\n *\n * @private\n * @function Highcharts.Axis#toFixedRange\n */\n NavigatorAxisAdditions.prototype.toFixedRange = function (pxMin, pxMax, fixedMin, fixedMax) {\n var axis = this.axis,\n chart = axis.chart;\n var newMin = pick(fixedMin,\n axis.translate(pxMin,\n true, !axis.horiz)),\n newMax = pick(fixedMax,\n axis.translate(pxMax,\n true, !axis.horiz));\n var fixedRange = chart && chart.fixedRange,\n halfPointRange = (axis.pointRange || 0) / 2,\n changeRatio = fixedRange && (newMax - newMin) / fixedRange;\n // Add/remove half point range to/from the extremes (#1172)\n if (!defined(fixedMin)) {\n newMin = correctFloat(newMin + halfPointRange);\n }\n if (!defined(fixedMax)) {\n newMax = correctFloat(newMax - halfPointRange);\n }\n // If the difference between the fixed range and the actual requested\n // range is too great, the user is dragging across an ordinal gap, and\n // we need to release the range selector button.\n if (changeRatio > 0.7 && changeRatio < 1.3) {\n if (fixedMax) {\n newMin = newMax - fixedRange;\n }\n else {\n newMax = newMin + fixedRange;\n }\n }\n if (!isNumber(newMin) || !isNumber(newMax)) { // #1195, #7411\n newMin = newMax = void 0;\n }\n return {\n min: newMin,\n max: newMax\n };\n };\n return NavigatorAxisAdditions;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return NavigatorAxisAdditions;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorDefaults.js', [_modules['Core/Color/Color.js'], _modules['Core/Series/SeriesRegistry.js']], function (Color, SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var seriesTypes = SeriesRegistry.seriesTypes;\n /* *\n *\n * Constants\n *\n * */\n /**\n * The navigator is a small series below the main series, displaying\n * a view of the entire data set. It provides tools to zoom in and\n * out on parts of the data as well as panning across the dataset.\n *\n * @product highstock gantt\n * @optionparent navigator\n */\n var NavigatorDefaults = {\n /**\n * Whether the navigator and scrollbar should adapt to updated data\n * in the base X axis. When loading data async, as in the demo below,\n * this should be `false`. Otherwise new data will trigger navigator\n * redraw, which will cause unwanted looping. In the demo below, the\n * data in the navigator is set only once. On navigating, only the main\n * chart content is updated.\n *\n * @sample {highstock} stock/demo/lazy-loading/\n * Set to false with async data loading\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.adaptToUpdatedData\n */\n /**\n * An integer identifying the index to use for the base series, or a\n * string representing the id of the series.\n *\n * **Note**: As of Highcharts 5.0, this is now a deprecated option.\n * Prefer [series.showInNavigator](#plotOptions.series.showInNavigator).\n *\n * @see [series.showInNavigator](#plotOptions.series.showInNavigator)\n *\n * @deprecated\n * @type {number|string}\n * @default 0\n * @apioption navigator.baseSeries\n */\n /**\n * Enable or disable the navigator.\n *\n * @sample {highstock} stock/navigator/enabled/\n * Disable the navigator\n *\n * @type {boolean}\n * @default true\n * @apioption navigator.enabled\n */\n /**\n * When the chart is inverted, whether to draw the navigator on the\n * opposite side.\n *\n * @type {boolean}\n * @default false\n * @since 5.0.8\n * @apioption navigator.opposite\n */\n /**\n * The height of the navigator.\n *\n * @sample {highstock} stock/navigator/height/\n * A higher navigator\n */\n height: 40,\n /**\n * The distance from the nearest element, the X axis or X axis labels.\n *\n * @sample {highstock} stock/navigator/margin/\n * A margin of 2 draws the navigator closer to the X axis labels\n */\n margin: 25,\n /**\n * Whether the mask should be inside the range marking the zoomed\n * range, or outside. In Highcharts Stock 1.x it was always `false`.\n *\n * @sample {highstock} stock/navigator/maskinside-false/\n * False, mask outside\n *\n * @since 2.0\n */\n maskInside: true,\n /**\n * Options for the handles for dragging the zoomed area.\n *\n * @sample {highstock} stock/navigator/handles/\n * Colored handles\n */\n handles: {\n /**\n * Width for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n width: 7,\n /**\n * Height for handles.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n */\n height: 15,\n /**\n * Array to define shapes of handles. 0-index for left, 1-index for\n * right.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `url(graphic.png)`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @type {Array}\n * @default [\"navigator-handle\", \"navigator-handle\"]\n * @since 6.0.0\n */\n symbols: ['navigator-handle', 'navigator-handle'],\n /**\n * Allows to enable/disable handles.\n *\n * @since 6.0.0\n */\n enabled: true,\n /**\n * The width for the handle border and the stripes inside.\n *\n * @sample {highstock} stock/navigator/styled-handles/\n * Styled handles\n *\n * @since 6.0.0\n * @apioption navigator.handles.lineWidth\n */\n lineWidth: 1,\n /**\n * The fill for the handle.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The stroke for the handle border and the stripes inside.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */\n },\n /**\n * The color of the mask covering the areas of the navigator series\n * that are currently not visible in the main series. The default\n * color is bluish with an opacity of 0.3 to see the series below.\n *\n * @see In styled mode, the mask is styled with the\n * `.highcharts-navigator-mask` and\n * `.highcharts-navigator-mask-inside` classes.\n *\n * @sample {highstock} stock/navigator/maskfill/\n * Blue, semi transparent mask\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(102,133,194,0.3)\n */\n maskFill: color(\"#6685c2\" /* Palette.highlightColor60 */).setOpacity(0.3).get(),\n /**\n * The color of the line marking the currently zoomed area in the\n * navigator.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n */\n outlineColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the line marking the currently zoomed area in the\n * navigator.\n *\n * @see In styled mode, the outline stroke width is set with the\n * `.highcharts-navigator-outline` class.\n *\n * @sample {highstock} stock/navigator/outline/\n * 2px blue outline\n *\n * @type {number}\n */\n outlineWidth: 1,\n /**\n * Options for the navigator series. Available options are the same\n * as any series, documented at [plotOptions](#plotOptions.series)\n * and [series](#series).\n *\n * Unless data is explicitly defined on navigator.series, the data\n * is borrowed from the first series in the chart.\n *\n * Default series options for the navigator series are:\n * ```js\n * series: {\n * type: 'areaspline',\n * fillOpacity: 0.05,\n * dataGrouping: {\n * smoothed: true\n * },\n * lineWidth: 1,\n * marker: {\n * enabled: false\n * }\n * }\n * ```\n *\n * @see In styled mode, the navigator series is styled with the\n * `.highcharts-navigator-series` class.\n *\n * @sample {highstock} stock/navigator/series-data/\n * Using a separate data set for the navigator\n * @sample {highstock} stock/navigator/series/\n * A green navigator series\n *\n * @type {*|Array<*>|Highcharts.SeriesOptionsType|Array}\n */\n series: {\n /**\n * The type of the navigator series.\n *\n * Heads up:\n * In column-type navigator, zooming is limited to at least one\n * point with its `pointRange`.\n *\n * @sample {highstock} stock/navigator/column/\n * Column type navigator\n *\n * @type {string}\n * @default {highstock} `areaspline` if defined, otherwise `line`\n * @default {gantt} gantt\n */\n type: (typeof seriesTypes.areaspline === 'undefined' ?\n 'line' :\n 'areaspline'),\n /**\n * The fill opacity of the navigator series.\n */\n fillOpacity: 0.05,\n /**\n * The pixel line width of the navigator series.\n */\n lineWidth: 1,\n /**\n * @ignore-option\n */\n compare: null,\n /**\n * Unless data is explicitly defined, the data is borrowed from the\n * first series in the chart.\n *\n * @type {Array|object|null>}\n * @product highstock\n * @apioption navigator.series.data\n */\n /**\n * Data grouping options for the navigator series.\n *\n * @extends plotOptions.series.dataGrouping\n */\n dataGrouping: {\n approximation: 'average',\n enabled: true,\n groupPixelWidth: 2,\n // Replace smoothed property by anchors, #12455.\n firstAnchor: 'firstPoint',\n anchor: 'middle',\n lastAnchor: 'lastPoint',\n // Day and week differs from plotOptions.series.dataGrouping\n units: [\n ['millisecond', [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],\n ['second', [1, 2, 5, 10, 15, 30]],\n ['minute', [1, 2, 5, 10, 15, 30]],\n ['hour', [1, 2, 3, 4, 6, 8, 12]],\n ['day', [1, 2, 3, 4]],\n ['week', [1, 2, 3]],\n ['month', [1, 3, 6]],\n ['year', null]\n ]\n },\n /**\n * Data label options for the navigator series. Data labels are\n * disabled by default on the navigator series.\n *\n * @extends plotOptions.series.dataLabels\n */\n dataLabels: {\n enabled: false,\n zIndex: 2 // #1839\n },\n id: 'highcharts-navigator-series',\n className: 'highcharts-navigator-series',\n /**\n * Sets the fill color of the navigator series.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption navigator.series.color\n */\n /**\n * Line color for the navigator series. Allows setting the color\n * while disallowing the default candlestick setting.\n *\n * @type {Highcharts.ColorString|null}\n */\n lineColor: null,\n marker: {\n enabled: false\n },\n /**\n * Since Highcharts Stock v8, default value is the same as default\n * `pointRange` defined for a specific type (e.g. `null` for\n * column type).\n *\n * In Highcharts Stock version < 8, defaults to 0.\n *\n * @extends plotOptions.series.pointRange\n * @type {number|null}\n * @apioption navigator.series.pointRange\n */\n /**\n * The threshold option. Setting it to 0 will make the default\n * navigator area series draw its area from the 0 value and up.\n *\n * @type {number|null}\n */\n threshold: null\n },\n /**\n * Enable or disable navigator sticking to right, while adding new\n * points. If `undefined`, the navigator sticks to the axis maximum only\n * if it was already at the maximum prior to adding points.\n *\n * @type {boolean}\n * @default undefined\n * @since 10.2.1\n * @sample {highstock} stock/navigator/sticktomax-false/\n * stickToMax set to false\n * @apioption navigator.stickToMax\n */\n /**\n * Options for the navigator X axis. Default series options for the\n * navigator xAxis are:\n * ```js\n * xAxis: {\n * tickWidth: 0,\n * lineWidth: 0,\n * gridLineWidth: 1,\n * tickPixelInterval: 200,\n * labels: {\n * align: 'left',\n * style: {\n * color: '#888'\n * },\n * x: 3,\n * y: -4\n * }\n * }\n * ```\n *\n * @extends xAxis\n * @excluding linkedTo, maxZoom, minRange, opposite, range, scrollbar,\n * showEmpty, maxRange\n */\n xAxis: {\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * xAxis.maxPadding, but value is set in milliseconds.\n * Can be set for both, main xAxis and navigator's xAxis.\n *\n * @since 6.0.0\n */\n overscroll: 0,\n className: 'highcharts-navigator-xaxis',\n tickLength: 0,\n lineWidth: 0,\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n gridLineWidth: 1,\n tickPixelInterval: 200,\n labels: {\n align: 'left',\n /**\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @ignore */\n color: \"#999999\" /* Palette.neutralColor40 */\n },\n x: 3,\n y: -4\n },\n crosshair: false\n },\n /**\n * Options for the navigator Y axis. Default series options for the\n * navigator yAxis are:\n * ```js\n * yAxis: {\n * gridLineWidth: 0,\n * startOnTick: false,\n * endOnTick: false,\n * minPadding: 0.1,\n * maxPadding: 0.1,\n * labels: {\n * enabled: false\n * },\n * title: {\n * text: null\n * },\n * tickWidth: 0\n * }\n * ```\n *\n * @extends yAxis\n * @excluding height, linkedTo, maxZoom, minRange, ordinal, range,\n * showEmpty, scrollbar, top, units, maxRange, minLength,\n * maxLength, resize\n */\n yAxis: {\n className: 'highcharts-navigator-yaxis',\n gridLineWidth: 0,\n startOnTick: false,\n endOnTick: false,\n minPadding: 0.1,\n maxPadding: 0.1,\n labels: {\n enabled: false\n },\n crosshair: false,\n title: {\n text: null\n },\n tickLength: 0,\n tickWidth: 0\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Maximum range which can be set using the navigator's handles.\n * Opposite of [xAxis.minRange](#xAxis.minRange).\n *\n * @sample {highstock} stock/navigator/maxrange/\n * Defined max and min range\n *\n * @type {number}\n * @since 6.0.0\n * @product highstock gantt\n * @apioption xAxis.maxRange\n */\n (''); // keeps doclets above in JS file\n\n return NavigatorDefaults;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorSymbols.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n * @private\n */\n function navigatorHandle(_x, _y, width, height, options) {\n if (options === void 0) { options = {}; }\n var halfWidth = options.width ? options.width / 2 : width,\n markerPosition = Math.round(halfWidth / 3) + 0.5;\n height = options.height || height;\n return [\n ['M', -halfWidth - 1, 0.5],\n ['L', halfWidth, 0.5],\n ['L', halfWidth, height + 0.5],\n ['L', -halfWidth - 1, height + 0.5],\n ['L', -halfWidth - 1, 0.5],\n ['M', -markerPosition, 4],\n ['L', -markerPosition, height - 3],\n ['M', markerPosition - 1, 4],\n ['L', markerPosition - 1, height - 3]\n ];\n }\n /* *\n *\n * Default Export\n *\n * */\n var NavigatorSymbols = {\n 'navigator-handle': navigatorHandle\n };\n\n return NavigatorSymbols;\n });\n _registerModule(_modules, 'Stock/Navigator/NavigatorComposition.js', [_modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/NavigatorAxisComposition.js'], _modules['Stock/Navigator/NavigatorDefaults.js'], _modules['Stock/Navigator/NavigatorSymbols.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (D, H, NavigatorAxisAdditions, NavigatorDefaults, NavigatorSymbols, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n setOptions = D.setOptions;\n var isTouchDevice = H.isTouchDevice;\n var getRendererType = RendererRegistry.getRendererType;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var NavigatorConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(AxisClass, ChartClass, NavigatorClass, SeriesClass) {\n NavigatorAxisAdditions.compose(AxisClass);\n NavigatorConstructor = NavigatorClass;\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.callbacks.push(onChartCallback);\n addEvent(ChartClass, 'afterAddSeries', onChartAfterAddSeries);\n addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);\n addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n addEvent(ChartClass, 'beforeShowResetZoom', onChartBeforeShowResetZoom);\n addEvent(ChartClass, 'update', onChartUpdate);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'afterUpdate', onSeriesAfterUpdate);\n }\n if (composedClasses.indexOf(getRendererType) === -1) {\n composedClasses.push(getRendererType);\n extend(getRendererType().prototype.symbols, NavigatorSymbols);\n }\n if (composedClasses.indexOf(setOptions) === -1) {\n composedClasses.push(setOptions);\n extend(defaultOptions, { navigator: NavigatorDefaults });\n }\n }\n /**\n * Handle adding new series.\n * @private\n */\n function onChartAfterAddSeries() {\n if (this.navigator) {\n // Recompute which series should be shown in navigator, and add them\n this.navigator.setBaseSeries(null, false);\n }\n }\n /**\n * For stock charts, extend the Chart.setChartSize method so that we can set the\n * final top position of the navigator once the height of the chart, including\n * the legend, is determined. #367. We can't use Chart.getMargins, because\n * labels offsets are not calculated yet.\n * @private\n */\n function onChartAfterSetChartSize() {\n var legend = this.legend,\n navigator = this.navigator;\n var scrollbarHeight,\n legendOptions,\n xAxis,\n yAxis;\n if (navigator) {\n legendOptions = legend && legend.options;\n xAxis = navigator.xAxis;\n yAxis = navigator.yAxis;\n scrollbarHeight = navigator.scrollbarHeight;\n // Compute the top position\n if (this.inverted) {\n navigator.left = navigator.opposite ?\n this.chartWidth - scrollbarHeight -\n navigator.height :\n this.spacing[3] + scrollbarHeight;\n navigator.top = this.plotTop + scrollbarHeight;\n }\n else {\n navigator.left = pick(xAxis.left, this.plotLeft + scrollbarHeight);\n navigator.top = navigator.navigatorOptions.top ||\n this.chartHeight -\n navigator.height -\n scrollbarHeight -\n this.spacing[2] -\n (this.rangeSelector && this.extraBottomMargin ?\n this.rangeSelector.getHeight() :\n 0) -\n ((legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.layout !== 'proximate' && // #13392\n legendOptions.enabled &&\n !legendOptions.floating) ?\n legend.legendHeight +\n pick(legendOptions.margin, 10) :\n 0) -\n (this.titleOffset ? this.titleOffset[2] : 0);\n }\n if (xAxis && yAxis) { // false if navigator is disabled (#904)\n if (this.inverted) {\n xAxis.options.left = yAxis.options.left = navigator.left;\n }\n else {\n xAxis.options.top = yAxis.options.top = navigator.top;\n }\n xAxis.setAxisSize();\n yAxis.setAxisSize();\n }\n }\n }\n /**\n * Initialize navigator, if no scrolling exists yet.\n * @private\n */\n function onChartAfterUpdate(event) {\n if (!this.navigator && !this.scroller &&\n (this.options.navigator.enabled ||\n this.options.scrollbar.enabled)) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n if (pick(event.redraw, true)) {\n this.redraw(event.animation); // #7067\n }\n }\n }\n /**\n * Initialize navigator for stock charts\n * @private\n */\n function onChartBeforeRender() {\n var options = this.options;\n if (options.navigator.enabled ||\n options.scrollbar.enabled) {\n this.scroller = this.navigator = new NavigatorConstructor(this);\n }\n }\n /**\n * For Stock charts. For x only zooming, do not to create the zoom button\n * because X axis zooming is already allowed by the Navigator and Range\n * selector. (#9285)\n * @private\n */\n function onChartBeforeShowResetZoom() {\n var chartOptions = this.options,\n navigator = chartOptions.navigator,\n rangeSelector = chartOptions.rangeSelector;\n if (((navigator && navigator.enabled) ||\n (rangeSelector && rangeSelector.enabled)) &&\n ((!isTouchDevice &&\n chartOptions.chart.zooming.type === 'x') ||\n (isTouchDevice &&\n chartOptions.chart.zooming.pinchType === 'x'))) {\n return false;\n }\n }\n /**\n * @private\n */\n function onChartCallback(chart) {\n var navigator = chart.navigator;\n // Initialize the navigator\n if (navigator && chart.xAxis[0]) {\n var extremes = chart.xAxis[0].getExtremes();\n navigator.render(extremes.min, extremes.max);\n }\n }\n /**\n * Merge options, if no scrolling exists yet\n * @private\n */\n function onChartUpdate(e) {\n var navigatorOptions = (e.options.navigator || {}),\n scrollbarOptions = (e.options.scrollbar || {});\n if (!this.navigator && !this.scroller &&\n (navigatorOptions.enabled || scrollbarOptions.enabled)) {\n merge(true, this.options.navigator, navigatorOptions);\n merge(true, this.options.scrollbar, scrollbarOptions);\n delete e.options.navigator;\n delete e.options.scrollbar;\n }\n }\n /**\n * Handle updating series\n * @private\n */\n function onSeriesAfterUpdate() {\n if (this.chart.navigator && !this.options.isInternal) {\n this.chart.navigator.setBaseSeries(null, false);\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var NavigatorComposition = {\n compose: compose\n };\n\n return NavigatorComposition;\n });\n _registerModule(_modules, 'Core/Axis/ScrollbarAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n defined = U.defined,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Creates scrollbars if enabled.\n * @private\n */\n var ScrollbarAxis = /** @class */ (function () {\n function ScrollbarAxis() {\n }\n /**\n * Attaches to axis events to create scrollbars if enabled.\n *\n * @private\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param ScrollbarClass\n * Scrollbar class to use.\n */\n ScrollbarAxis.compose = function (AxisClass, ScrollbarClass) {\n if (ScrollbarAxis.composed.indexOf(AxisClass) === -1) {\n ScrollbarAxis.composed.push(AxisClass);\n }\n else {\n return AxisClass;\n }\n var getExtremes = function (axis) {\n var axisMin = pick(axis.options && axis.options.min,\n axis.min);\n var axisMax = pick(axis.options && axis.options.max,\n axis.max);\n return {\n axisMin: axisMin,\n axisMax: axisMax,\n scrollMin: defined(axis.dataMin) ?\n Math.min(axisMin, axis.min, axis.dataMin, pick(axis.threshold, Infinity)) : axisMin,\n scrollMax: defined(axis.dataMax) ?\n Math.max(axisMax, axis.max, axis.dataMax, pick(axis.threshold, -Infinity)) : axisMax\n };\n };\n // Wrap axis initialization and create scrollbar if enabled:\n addEvent(AxisClass, 'afterInit', function () {\n var axis = this;\n if (axis.options &&\n axis.options.scrollbar &&\n axis.options.scrollbar.enabled) {\n // Predefined options:\n axis.options.scrollbar.vertical = !axis.horiz;\n axis.options.startOnTick = axis.options.endOnTick = false;\n axis.scrollbar = new ScrollbarClass(axis.chart.renderer, axis.options.scrollbar, axis.chart);\n addEvent(axis.scrollbar, 'changed', function (e) {\n var _a = getExtremes(axis),\n axisMin = _a.axisMin,\n axisMax = _a.axisMax,\n unitedMin = _a.scrollMin,\n unitedMax = _a.scrollMax,\n range = unitedMax - unitedMin,\n to,\n from;\n // #12834, scroll when show/hide series, wrong extremes\n if (!defined(axisMin) || !defined(axisMax)) {\n return;\n }\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n to = unitedMin + range * this.to;\n from = unitedMin + range * this.from;\n }\n else {\n // y-values in browser are reversed, but this also\n // applies for reversed horizontal axis:\n to = unitedMin + range * (1 - this.from);\n from = unitedMin + range * (1 - this.to);\n }\n if (this.shouldUpdateExtremes(e.DOMType)) {\n axis.setExtremes(from, to, true, (e.DOMType !== 'mousemove' &&\n e.DOMType !== 'touchmove'), e);\n }\n else {\n // When live redraw is disabled, don't change extremes\n // Only change the position of the scollbar thumb\n this.setRange(this.from, this.to);\n }\n });\n }\n });\n // Wrap rendering axis, and update scrollbar if one is created:\n addEvent(AxisClass, 'afterRender', function () {\n var axis = this,\n _a = getExtremes(axis),\n scrollMin = _a.scrollMin,\n scrollMax = _a.scrollMax,\n scrollbar = axis.scrollbar,\n offset = (axis.axisTitleMargin + (axis.titleOffset || 0)),\n scrollbarsOffsets = axis.chart.scrollbarsOffsets,\n axisMargin = axis.options.margin || 0,\n offsetsIndex,\n from,\n to;\n if (scrollbar) {\n if (axis.horiz) {\n // Reserve space for labels/title\n if (!axis.opposite) {\n scrollbarsOffsets[1] += offset;\n }\n scrollbar.position(axis.left, (axis.top +\n axis.height +\n 2 +\n scrollbarsOffsets[1] -\n (axis.opposite ? axisMargin : 0)), axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (!axis.opposite) {\n scrollbarsOffsets[1] += axisMargin;\n }\n offsetsIndex = 1;\n }\n else {\n // Reserve space for labels/title\n if (axis.opposite) {\n scrollbarsOffsets[0] += offset;\n }\n var xPosition = void 0;\n if (!scrollbar.options.opposite) {\n xPosition = axis.opposite ? 0 : axisMargin;\n }\n else {\n xPosition = axis.left +\n axis.width +\n 2 +\n scrollbarsOffsets[0] -\n (axis.opposite ? 0 : axisMargin);\n }\n scrollbar.position(xPosition, axis.top, axis.width, axis.height);\n // Next scrollbar should reserve space for margin (if set)\n if (axis.opposite) {\n scrollbarsOffsets[0] += axisMargin;\n }\n offsetsIndex = 0;\n }\n scrollbarsOffsets[offsetsIndex] += scrollbar.size +\n scrollbar.options.margin;\n if (isNaN(scrollMin) ||\n isNaN(scrollMax) ||\n !defined(axis.min) ||\n !defined(axis.max) ||\n axis.min === axis.max // #10733\n ) {\n // default action: when extremes are the same or there is\n // not extremes on the axis, but scrollbar exists, make it\n // full size\n scrollbar.setRange(0, 1);\n }\n else {\n from = ((axis.min - scrollMin) /\n (scrollMax - scrollMin));\n to = ((axis.max - scrollMin) /\n (scrollMax - scrollMin));\n if ((axis.horiz && !axis.reversed) ||\n (!axis.horiz && axis.reversed)) {\n scrollbar.setRange(from, to);\n }\n else {\n // inverse vertical axis\n scrollbar.setRange(1 - to, 1 - from);\n }\n }\n }\n });\n // Make space for a scrollbar:\n addEvent(AxisClass, 'afterGetOffset', function () {\n var axis = this,\n opposite = axis.scrollbar && !axis.scrollbar.options.opposite,\n index = axis.horiz ? 2 : opposite ? 3 : 1,\n scrollbar = axis.scrollbar;\n if (scrollbar) {\n // reset scrollbars offsets\n axis.chart.scrollbarsOffsets = [0, 0];\n axis.chart.axisOffset[index] +=\n scrollbar.size + scrollbar.options.margin;\n }\n });\n return AxisClass;\n };\n ScrollbarAxis.composed = [];\n return ScrollbarAxis;\n }());\n\n return ScrollbarAxis;\n });\n _registerModule(_modules, 'Stock/Scrollbar/ScrollbarDefaults.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isTouchDevice = H.isTouchDevice;\n /* *\n *\n * Constant\n *\n * */\n /**\n *\n * The scrollbar is a means of panning over the X axis of a stock chart.\n * Scrollbars can also be applied to other types of axes.\n *\n * Another approach to scrollable charts is the [chart.scrollablePlotArea](\n * https://api.highcharts.com/highcharts/chart.scrollablePlotArea) option that\n * is especially suitable for simpler cartesian charts on mobile.\n *\n * In styled mode, all the presentational options for the\n * scrollbar are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample stock/yaxis/inverted-bar-scrollbar/\n * A scrollbar on a simple bar chart\n *\n * @product highstock gantt\n * @optionparent scrollbar\n *\n * @private\n */\n var ScrollbarDefaults = {\n /**\n * The height of the scrollbar. The height also applies to the width\n * of the scroll arrows so that they are always squares. Defaults to\n * 20 for touch devices and 14 for mouse devices.\n *\n * @sample stock/scrollbar/height/\n * A 30px scrollbar\n *\n * @type {number}\n * @default 20/14\n */\n height: isTouchDevice ? 20 : 14,\n /**\n * The border rounding radius of the bar.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderRadius: 0,\n /**\n * The corner radius of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderRadius: 0,\n /**\n * Enable or disable the scrollbar.\n *\n * @sample stock/scrollbar/enabled/\n * Disable the scrollbar,\n only use navigator\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.enabled\n */\n /**\n * Whether to redraw the main chart as the scrollbar or the navigator\n * zoomed window is moved. Defaults to `true` for modern browsers and\n * `false` for legacy IE browsers as well as mobile devices.\n *\n * @sample stock/scrollbar/liveredraw\n * Setting live redraw to false\n *\n * @type {boolean}\n * @since 1.3\n */\n liveRedraw: void 0,\n /**\n * The margin between the scrollbar and its axis when the scrollbar is\n * applied directly to an axis.\n */\n margin: 10,\n /**\n * The minimum width of the scrollbar.\n *\n * @since 1.2.5\n */\n minWidth: 6,\n /** @ignore-option */\n opposite: true,\n /**\n * Whether to show or hide the scrollbar when the scrolled content is\n * zoomed out to it full extent.\n *\n * @type {boolean}\n * @default true\n * @apioption scrollbar.showFull\n */\n step: 0.2,\n /**\n * The z index of the scrollbar group.\n */\n zIndex: 3,\n /**\n * The background color of the scrollbar itself.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBackgroundColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the bar's border.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n barBorderWidth: 1,\n /**\n * The color of the scrollbar's border.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n barBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the small arrow inside the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonArrowColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The color of scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBackgroundColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The color of the border of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n buttonBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The border width of the scrollbar buttons.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n buttonBorderWidth: 1,\n /**\n * The color of the small rifles in the middle of the scrollbar.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n rifleColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The color of the track background.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBackgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The color of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n trackBorderColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * The corner radius of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n *\n * @type {number}\n * @default 0\n * @apioption scrollbar.trackBorderRadius\n */\n /**\n * The width of the border of the scrollbar track.\n *\n * @sample stock/scrollbar/style/\n * Scrollbar styling\n */\n trackBorderWidth: 1\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ScrollbarDefaults;\n });\n _registerModule(_modules, 'Stock/Scrollbar/Scrollbar.js', [_modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/ScrollbarAxis.js'], _modules['Stock/Scrollbar/ScrollbarDefaults.js'], _modules['Core/Utilities.js']], function (D, H, ScrollbarAxis, ScrollbarDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * A reusable scrollbar, internally used in Highcharts Stock's\n * navigator and optionally on individual axes.\n *\n * @private\n * @class\n * @name Highcharts.Scrollbar\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\n var Scrollbar = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Scrollbar(renderer, options, chart) {\n /* *\n *\n * Properties\n *\n * */\n this._events = [];\n this.chart = void 0;\n this.chartX = 0;\n this.chartY = 0;\n this.from = 0;\n this.group = void 0;\n this.options = void 0;\n this.renderer = void 0;\n this.scrollbar = void 0;\n this.scrollbarButtons = [];\n this.scrollbarGroup = void 0;\n this.scrollbarLeft = 0;\n this.scrollbarRifles = void 0;\n this.scrollbarStrokeWidth = 1;\n this.scrollbarTop = 0;\n this.size = 0;\n this.to = 0;\n this.track = void 0;\n this.trackBorderWidth = 1;\n this.userOptions = void 0;\n this.x = 0;\n this.y = 0;\n this.init(renderer, options, chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Scrollbar.compose = function (AxisClass) {\n ScrollbarAxis.compose(AxisClass, Scrollbar);\n };\n /**\n * When we have vertical scrollbar, rifles and arrow in buttons should be\n * rotated. The same method is used in Navigator's handles, to rotate them.\n *\n * @function Highcharts.swapXY\n *\n * @param {Highcharts.SVGPathArray} path\n * Path to be rotated.\n *\n * @param {boolean} [vertical]\n * If vertical scrollbar, swap x-y values.\n *\n * @return {Highcharts.SVGPathArray}\n * Rotated path.\n *\n * @requires modules/stock\n */\n Scrollbar.swapXY = function (path, vertical) {\n if (vertical) {\n path.forEach(function (seg) {\n var len = seg.length;\n var temp;\n for (var i = 0; i < len; i += 2) {\n temp = seg[i + 1];\n if (typeof temp === 'number') {\n seg[i + 1] = seg[i + 2];\n seg[i + 2] = temp;\n }\n }\n });\n }\n return path;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set up the mouse and touch events for the Scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#addEvents\n */\n Scrollbar.prototype.addEvents = function () {\n var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],\n buttons = this.scrollbarButtons,\n bar = this.scrollbarGroup.element,\n track = this.track.element,\n mouseDownHandler = this.mouseDownHandler.bind(this),\n mouseMoveHandler = this.mouseMoveHandler.bind(this),\n mouseUpHandler = this.mouseUpHandler.bind(this);\n // Mouse events\n var _events = [\n [\n buttons[buttonsOrder[0]].element,\n 'click',\n this.buttonToMinClick.bind(this)\n ],\n [\n buttons[buttonsOrder[1]].element,\n 'click',\n this.buttonToMaxClick.bind(this)\n ],\n [track, 'click',\n this.trackClick.bind(this)],\n [bar, 'mousedown',\n mouseDownHandler],\n [bar.ownerDocument, 'mousemove',\n mouseMoveHandler],\n [bar.ownerDocument, 'mouseup',\n mouseUpHandler]\n ];\n // Touch events\n if (H.hasTouch) {\n _events.push([bar, 'touchstart', mouseDownHandler], [bar.ownerDocument, 'touchmove', mouseMoveHandler], [bar.ownerDocument, 'touchend', mouseUpHandler]);\n }\n // Add them all\n _events.forEach(function (args) {\n addEvent.apply(null, args);\n });\n this._events = _events;\n };\n Scrollbar.prototype.buttonToMaxClick = function (e) {\n var scroller = this;\n var range = ((scroller.to - scroller.from) *\n pick(scroller.options.step, 0.2));\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n Scrollbar.prototype.buttonToMinClick = function (e) {\n var scroller = this;\n var range = correctFloat(scroller.to - scroller.from) *\n pick(scroller.options.step, 0.2);\n scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Get normalized (0-1) cursor position over the scrollbar\n *\n * @private\n * @function Highcharts.Scrollbar#cursorToScrollbarPosition\n *\n * @param {*} normalizedEvent\n * normalized event, with chartX and chartY values\n *\n * @return {Highcharts.Dictionary}\n * Local position {chartX, chartY}\n */\n Scrollbar.prototype.cursorToScrollbarPosition = function (normalizedEvent) {\n var scroller = this,\n options = scroller.options,\n minWidthDifference = options.minWidth > scroller.calculatedWidth ?\n options.minWidth :\n 0; // minWidth distorts translation\n return {\n chartX: (normalizedEvent.chartX - scroller.x -\n scroller.xOffset) /\n (scroller.barWidth - minWidthDifference),\n chartY: (normalizedEvent.chartY - scroller.y -\n scroller.yOffset) /\n (scroller.barWidth - minWidthDifference)\n };\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Scrollbar#destroy\n */\n Scrollbar.prototype.destroy = function () {\n var scroller = this,\n navigator = scroller.chart.scroller;\n // Disconnect events added in addEvents\n scroller.removeEvents();\n // Destroy properties\n [\n 'track',\n 'scrollbarRifles',\n 'scrollbar',\n 'scrollbarGroup',\n 'group'\n ].forEach(function (prop) {\n if (scroller[prop] && scroller[prop].destroy) {\n scroller[prop] = scroller[prop].destroy();\n }\n });\n // #6421, chart may have more scrollbars\n if (navigator && scroller === navigator.scrollbar) {\n navigator.scrollbar = null;\n // Destroy elements in collection\n destroyObjectProperties(navigator.scrollbarButtons);\n }\n };\n /**\n * Draw the scrollbar buttons with arrows\n *\n * @private\n * @function Highcharts.Scrollbar#drawScrollbarButton\n * @param {number} index\n * 0 is left, 1 is right\n */\n Scrollbar.prototype.drawScrollbarButton = function (index) {\n var scroller = this,\n renderer = scroller.renderer,\n scrollbarButtons = scroller.scrollbarButtons,\n options = scroller.options,\n size = scroller.size,\n group = renderer.g().add(scroller.group);\n var tempElem;\n scrollbarButtons.push(group);\n // Create a rectangle for the scrollbar button\n tempElem = renderer.rect()\n .addClass('highcharts-scrollbar-button')\n .add(group);\n // Presentational attributes\n if (!scroller.chart.styledMode) {\n tempElem.attr({\n stroke: options.buttonBorderColor,\n 'stroke-width': options.buttonBorderWidth,\n fill: options.buttonBackgroundColor\n });\n }\n // Place the rectangle based on the rendered stroke width\n tempElem.attr(tempElem.crisp({\n x: -0.5,\n y: -0.5,\n width: size + 1,\n height: size + 1,\n r: options.buttonBorderRadius\n }, tempElem.strokeWidth()));\n // Button arrow\n tempElem = renderer\n .path(Scrollbar.swapXY([[\n 'M',\n size / 2 + (index ? -1 : 1),\n size / 2 - 3\n ], [\n 'L',\n size / 2 + (index ? -1 : 1),\n size / 2 + 3\n ], [\n 'L',\n size / 2 + (index ? 2 : -2),\n size / 2\n ]], options.vertical))\n .addClass('highcharts-scrollbar-arrow')\n .add(scrollbarButtons[index]);\n if (!scroller.chart.styledMode) {\n tempElem.attr({\n fill: options.buttonArrowColor\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Scrollbar#init\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\n Scrollbar.prototype.init = function (renderer, options, chart) {\n var scroller = this;\n scroller.scrollbarButtons = [];\n scroller.renderer = renderer;\n scroller.userOptions = options;\n scroller.options = merge(ScrollbarDefaults, defaultOptions.scrollbar, options);\n scroller.chart = chart;\n // backward compatibility\n scroller.size = pick(scroller.options.size, scroller.options.height);\n // Init\n if (options.enabled) {\n scroller.render();\n scroller.addEvents();\n }\n };\n Scrollbar.prototype.mouseDownHandler = function (e) {\n var scroller = this,\n normalizedEvent = scroller.chart.pointer.normalize(e),\n mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);\n scroller.chartX = mousePosition.chartX;\n scroller.chartY = mousePosition.chartY;\n scroller.initPositions = [scroller.from, scroller.to];\n scroller.grabbedCenter = true;\n };\n /**\n * Event handler for the mouse move event.\n * @private\n */\n Scrollbar.prototype.mouseMoveHandler = function (e) {\n var scroller = this,\n normalizedEvent = scroller.chart.pointer.normalize(e),\n options = scroller.options,\n direction = options.vertical ?\n 'chartY' : 'chartX',\n initPositions = scroller.initPositions || [];\n var scrollPosition,\n chartPosition,\n change;\n // In iOS, a mousemove event with e.pageX === 0 is fired when\n // holding the finger down in the center of the scrollbar. This\n // should be ignored.\n if (scroller.grabbedCenter &&\n // #4696, scrollbar failed on Android\n (!e.touches || e.touches[0][direction] !== 0)) {\n chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];\n scrollPosition = scroller[direction];\n change = chartPosition - scrollPosition;\n scroller.hasDragged = true;\n scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n }\n };\n /**\n * Event handler for the mouse up event.\n * @private\n */\n Scrollbar.prototype.mouseUpHandler = function (e) {\n var scroller = this;\n if (scroller.hasDragged) {\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMType: e.type,\n DOMEvent: e\n });\n }\n scroller.grabbedCenter =\n scroller.hasDragged =\n scroller.chartX =\n scroller.chartY = null;\n };\n /**\n * Position the scrollbar, method called from a parent with defined\n * dimensions.\n *\n * @private\n * @function Highcharts.Scrollbar#position\n * @param {number} x\n * x-position on the chart\n * @param {number} y\n * y-position on the chart\n * @param {number} width\n * width of the scrollbar\n * @param {number} height\n * height of the scorllbar\n */\n Scrollbar.prototype.position = function (x, y, width, height) {\n var scroller = this,\n options = scroller.options,\n vertical = options.vertical,\n method = scroller.rendered ? 'animate' : 'attr';\n var xOffset = height,\n yOffset = 0;\n // Make the scrollbar visible when it is repositioned, #15763.\n scroller.group.show();\n scroller.x = x;\n scroller.y = y + this.trackBorderWidth;\n scroller.width = width; // width with buttons\n scroller.height = height;\n scroller.xOffset = xOffset;\n scroller.yOffset = yOffset;\n // If Scrollbar is a vertical type, swap options:\n if (vertical) {\n scroller.width = scroller.yOffset = width = yOffset = scroller.size;\n scroller.xOffset = xOffset = 0;\n scroller.barWidth = height - width * 2; // width without buttons\n scroller.x = x = x + scroller.options.margin;\n }\n else {\n scroller.height = scroller.xOffset = height = xOffset =\n scroller.size;\n scroller.barWidth = width - height * 2; // width without buttons\n scroller.y = scroller.y + scroller.options.margin;\n }\n // Set general position for a group:\n scroller.group[method]({\n translateX: x,\n translateY: scroller.y\n });\n // Resize background/track:\n scroller.track[method]({\n width: width,\n height: height\n });\n // Move right/bottom button ot it's place:\n scroller.scrollbarButtons[1][method]({\n translateX: vertical ? 0 : width - xOffset,\n translateY: vertical ? height - yOffset : 0\n });\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Scrollbar#removeEvents\n */\n Scrollbar.prototype.removeEvents = function () {\n this._events.forEach(function (args) {\n removeEvent.apply(null, args);\n });\n this._events.length = 0;\n };\n /**\n * Render scrollbar with all required items.\n *\n * @private\n * @function Highcharts.Scrollbar#render\n */\n Scrollbar.prototype.render = function () {\n var scroller = this,\n renderer = scroller.renderer,\n options = scroller.options,\n size = scroller.size,\n styledMode = scroller.chart.styledMode,\n group = renderer.g('scrollbar')\n .attr({\n zIndex: options.zIndex\n })\n .hide() // initially hide the scrollbar #15863\n .add();\n // Draw the scrollbar group\n scroller.group = group;\n // Draw the scrollbar track:\n scroller.track = renderer.rect()\n .addClass('highcharts-scrollbar-track')\n .attr({\n x: 0,\n r: options.trackBorderRadius || 0,\n height: size,\n width: size\n }).add(group);\n if (!styledMode) {\n scroller.track.attr({\n fill: options.trackBackgroundColor,\n stroke: options.trackBorderColor,\n 'stroke-width': options.trackBorderWidth\n });\n }\n scroller.trackBorderWidth = scroller.track.strokeWidth();\n scroller.track.attr({\n y: -this.trackBorderWidth % 2 / 2\n });\n // Draw the scrollbar itself\n scroller.scrollbarGroup = renderer.g().add(group);\n scroller.scrollbar = renderer.rect()\n .addClass('highcharts-scrollbar-thumb')\n .attr({\n height: size,\n width: size,\n r: options.barBorderRadius || 0\n }).add(scroller.scrollbarGroup);\n scroller.scrollbarRifles = renderer\n .path(Scrollbar.swapXY([\n ['M', -3, size / 4],\n ['L', -3, 2 * size / 3],\n ['M', 0, size / 4],\n ['L', 0, 2 * size / 3],\n ['M', 3, size / 4],\n ['L', 3, 2 * size / 3]\n ], options.vertical))\n .addClass('highcharts-scrollbar-rifles')\n .add(scroller.scrollbarGroup);\n if (!styledMode) {\n scroller.scrollbar.attr({\n fill: options.barBackgroundColor,\n stroke: options.barBorderColor,\n 'stroke-width': options.barBorderWidth\n });\n scroller.scrollbarRifles.attr({\n stroke: options.rifleColor,\n 'stroke-width': 1\n });\n }\n scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();\n scroller.scrollbarGroup.translate(-scroller.scrollbarStrokeWidth % 2 / 2, -scroller.scrollbarStrokeWidth % 2 / 2);\n // Draw the buttons:\n scroller.drawScrollbarButton(0);\n scroller.drawScrollbarButton(1);\n };\n /**\n * Set scrollbar size, with a given scale.\n *\n * @private\n * @function Highcharts.Scrollbar#setRange\n * @param {number} from\n * scale (0-1) where bar should start\n * @param {number} to\n * scale (0-1) where bar should end\n */\n Scrollbar.prototype.setRange = function (from, to) {\n var scroller = this,\n options = scroller.options,\n vertical = options.vertical,\n minWidth = options.minWidth,\n fullWidth = scroller.barWidth,\n method = (this.rendered &&\n !this.hasDragged &&\n !(this.chart.navigator && this.chart.navigator.hasDragged)) ? 'animate' : 'attr';\n if (!defined(fullWidth)) {\n return;\n }\n var toPX = fullWidth * Math.min(to, 1);\n var fromPX,\n newSize;\n from = Math.max(from, 0);\n fromPX = Math.ceil(fullWidth * from);\n scroller.calculatedWidth = newSize = correctFloat(toPX - fromPX);\n // We need to recalculate position, if minWidth is used\n if (newSize < minWidth) {\n fromPX = (fullWidth - minWidth + newSize) * from;\n newSize = minWidth;\n }\n var newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);\n var newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2\n // Store current position:\n scroller.from = from;\n scroller.to = to;\n if (!vertical) {\n scroller.scrollbarGroup[method]({\n translateX: newPos\n });\n scroller.scrollbar[method]({\n width: newSize\n });\n scroller.scrollbarRifles[method]({\n translateX: newRiflesPos\n });\n scroller.scrollbarLeft = newPos;\n scroller.scrollbarTop = 0;\n }\n else {\n scroller.scrollbarGroup[method]({\n translateY: newPos\n });\n scroller.scrollbar[method]({\n height: newSize\n });\n scroller.scrollbarRifles[method]({\n translateY: newRiflesPos\n });\n scroller.scrollbarTop = newPos;\n scroller.scrollbarLeft = 0;\n }\n if (newSize <= 12) {\n scroller.scrollbarRifles.hide();\n }\n else {\n scroller.scrollbarRifles.show();\n }\n // Show or hide the scrollbar based on the showFull setting\n if (options.showFull === false) {\n if (from <= 0 && to >= 1) {\n scroller.group.hide();\n }\n else {\n scroller.group.show();\n }\n }\n scroller.rendered = true;\n };\n /**\n * Checks if the extremes should be updated in response to a scrollbar\n * change event.\n *\n * @private\n * @function Highcharts.Scrollbar#shouldUpdateExtremes\n */\n Scrollbar.prototype.shouldUpdateExtremes = function (eventType) {\n return (pick(this.options.liveRedraw, H.svg &&\n !H.isTouchDevice &&\n !this.chart.boosted) ||\n // Mouseup always should change extremes\n eventType === 'mouseup' ||\n eventType === 'touchend' ||\n // Internal events\n !defined(eventType));\n };\n Scrollbar.prototype.trackClick = function (e) {\n var scroller = this;\n var normalizedEvent = scroller.chart.pointer.normalize(e),\n range = scroller.to - scroller.from,\n top = scroller.y + scroller.scrollbarTop,\n left = scroller.x + scroller.scrollbarLeft;\n if ((scroller.options.vertical && normalizedEvent.chartY > top) ||\n (!scroller.options.vertical && normalizedEvent.chartX > left)) {\n // On the top or on the left side of the track:\n scroller.updatePosition(scroller.from + range, scroller.to + range);\n }\n else {\n // On the bottom or the right side of the track:\n scroller.updatePosition(scroller.from - range, scroller.to - range);\n }\n fireEvent(scroller, 'changed', {\n from: scroller.from,\n to: scroller.to,\n trigger: 'scrollbar',\n DOMEvent: e\n });\n };\n /**\n * Update the scrollbar with new options\n *\n * @private\n * @function Highcharts.Scrollbar#update\n * @param {Highcharts.ScrollbarOptions} options\n */\n Scrollbar.prototype.update = function (options) {\n this.destroy();\n this.init(this.chart.renderer, merge(true, this.options, options), this.chart);\n };\n /**\n * Update position option in the Scrollbar, with normalized 0-1 scale\n *\n * @private\n * @function Highcharts.Scrollbar#updatePosition\n * @param {number} from\n * @param {number} to\n */\n Scrollbar.prototype.updatePosition = function (from, to) {\n if (to > 1) {\n from = correctFloat(1 - correctFloat(to - from));\n to = 1;\n }\n if (from < 0) {\n to = correctFloat(to - from);\n from = 0;\n }\n this.from = from;\n this.to = to;\n };\n /* *\n *\n * Static Properties\n *\n * */\n Scrollbar.defaultOptions = ScrollbarDefaults;\n return Scrollbar;\n }());\n /* *\n *\n * Registry\n *\n * */\n defaultOptions.scrollbar = merge(true, Scrollbar.defaultOptions, defaultOptions.scrollbar);\n /* *\n *\n * Default Export\n *\n * */\n\n return Scrollbar;\n });\n _registerModule(_modules, 'Stock/Navigator/Navigator.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Axis/NavigatorAxisComposition.js'], _modules['Stock/Navigator/NavigatorComposition.js'], _modules['Stock/Scrollbar/Scrollbar.js'], _modules['Core/Utilities.js']], function (Axis, D, H, NavigatorAxisAdditions, NavigatorComposition, Scrollbar, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var hasTouch = H.hasTouch,\n isTouchDevice = H.isTouchDevice;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Finding the min or max of a set of variables where we don't know if they are\n * defined, is a pattern that is repeated several places in Highcharts. Consider\n * making this a global utility method.\n * @private\n */\n function numExt(extreme) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var numbers = [].filter.call(args,\n isNumber);\n if (numbers.length) {\n return Math[extreme].apply(0, numbers);\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The Navigator class\n *\n * @private\n * @class\n * @name Highcharts.Navigator\n *\n * @param {Highcharts.Chart} chart\n * Chart object\n */\n var Navigator = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Navigator(chart) {\n /* *\n *\n * Properties\n *\n * */\n this.baseSeries = void 0;\n this.chart = void 0;\n this.handles = void 0;\n this.height = void 0;\n this.left = void 0;\n this.navigatorEnabled = void 0;\n this.navigatorGroup = void 0;\n this.navigatorOptions = void 0;\n this.navigatorSeries = void 0;\n this.navigatorSize = void 0;\n this.opposite = void 0;\n this.outline = void 0;\n this.outlineHeight = void 0;\n this.range = void 0;\n this.rendered = void 0;\n this.shades = void 0;\n this.size = void 0;\n this.top = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zoomedMax = void 0;\n this.zoomedMin = void 0;\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n Navigator.compose = function (AxisClass, ChartClass, SeriesClass) {\n NavigatorComposition.compose(AxisClass, ChartClass, Navigator, SeriesClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n *\n * @private\n * @function Highcharts.Navigator#drawHandle\n *\n * @param {number} x\n * The x center for the handle\n *\n * @param {number} index\n * 0 for left and 1 for right\n *\n * @param {boolean|undefined} inverted\n * Flag for chart.inverted\n *\n * @param {string} verb\n * Use 'animate' or 'attr'\n */\n Navigator.prototype.drawHandle = function (x, index, inverted, verb) {\n var navigator = this,\n height = navigator.navigatorOptions.handles.height;\n // Place it\n navigator.handles[index][verb](inverted ? {\n translateX: Math.round(navigator.left + navigator.height / 2),\n translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5 - height)\n } : {\n translateX: Math.round(navigator.left + parseInt(x, 10)),\n translateY: Math.round(navigator.top + navigator.height / 2 - height / 2 - 1)\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawOutline\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawOutline = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this,\n maskInside = navigator.navigatorOptions.maskInside,\n outlineWidth = navigator.outline.strokeWidth(),\n halfOutline = outlineWidth / 2,\n outlineCorrection = (outlineWidth % 2) / 2, // #5800\n outlineHeight = navigator.outlineHeight,\n scrollbarHeight = navigator.scrollbarHeight || 0,\n navigatorSize = navigator.size;\n var left = navigator.left - scrollbarHeight,\n navigatorTop = navigator.top,\n verticalMin,\n path;\n if (inverted) {\n left -= halfOutline;\n verticalMin = navigatorTop + zoomedMax + outlineCorrection;\n zoomedMax = navigatorTop + zoomedMin + outlineCorrection;\n path = [\n [\n 'M',\n left + outlineHeight,\n navigatorTop - scrollbarHeight - outlineCorrection\n ],\n // top right of zoomed range\n ['L', left + outlineHeight, verticalMin],\n ['L', left, verticalMin],\n ['L', left, zoomedMax],\n ['L', left + outlineHeight, zoomedMax],\n [\n 'L',\n left + outlineHeight,\n navigatorTop + navigatorSize + scrollbarHeight\n ]\n ];\n if (maskInside) {\n path.push(\n // upper left of zoomed range\n ['M', left + outlineHeight, verticalMin - halfOutline], \n // upper right of z.r.\n [\n 'L',\n left + outlineHeight,\n zoomedMax + halfOutline\n ]);\n }\n }\n else {\n zoomedMin += left + scrollbarHeight - outlineCorrection;\n zoomedMax += left + scrollbarHeight - outlineCorrection;\n navigatorTop += halfOutline;\n path = [\n // left\n ['M', left, navigatorTop],\n // upper left of zoomed range\n ['L', zoomedMin, navigatorTop],\n // lower left of z.r.\n ['L', zoomedMin, navigatorTop + outlineHeight],\n // lower right of z.r.\n ['L', zoomedMax, navigatorTop + outlineHeight],\n // upper right of z.r.\n ['L', zoomedMax, navigatorTop],\n // right\n ['L', left + navigatorSize + scrollbarHeight * 2, navigatorTop]\n ];\n if (maskInside) {\n path.push(\n // upper left of zoomed range\n ['M', zoomedMin - halfOutline, navigatorTop], \n // upper right of z.r.\n ['L', zoomedMax + halfOutline, navigatorTop]);\n }\n }\n navigator.outline[verb]({\n d: path\n });\n };\n /**\n * Render outline around the zoomed range\n *\n * @private\n * @function Highcharts.Navigator#drawMasks\n *\n * @param {number} zoomedMin\n * in pixels position where zoomed range starts\n *\n * @param {number} zoomedMax\n * in pixels position where zoomed range ends\n *\n * @param {boolean|undefined} inverted\n * flag if chart is inverted\n *\n * @param {string} verb\n * use 'animate' or 'attr'\n */\n Navigator.prototype.drawMasks = function (zoomedMin, zoomedMax, inverted, verb) {\n var navigator = this,\n left = navigator.left,\n top = navigator.top,\n navigatorHeight = navigator.height;\n var height,\n width,\n x,\n y;\n // Determine rectangle position & size\n // According to (non)inverted position:\n if (inverted) {\n x = [left, left, left];\n y = [top, top + zoomedMin, top + zoomedMax];\n width = [navigatorHeight, navigatorHeight, navigatorHeight];\n height = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n }\n else {\n x = [left, left + zoomedMin, left + zoomedMax];\n y = [top, top, top];\n width = [\n zoomedMin,\n zoomedMax - zoomedMin,\n navigator.size - zoomedMax\n ];\n height = [navigatorHeight, navigatorHeight, navigatorHeight];\n }\n navigator.shades.forEach(function (shade, i) {\n shade[verb]({\n x: x[i],\n y: y[i],\n width: width[i],\n height: height[i]\n });\n });\n };\n /**\n * Generate DOM elements for a navigator:\n *\n * - main navigator group\n *\n * - all shades\n *\n * - outline\n *\n * - handles\n *\n * @private\n * @function Highcharts.Navigator#renderElements\n */\n Navigator.prototype.renderElements = function () {\n var navigator = this,\n navigatorOptions = navigator.navigatorOptions,\n maskInside = navigatorOptions.maskInside,\n chart = navigator.chart,\n inverted = chart.inverted,\n renderer = chart.renderer,\n mouseCursor = {\n cursor: inverted ? 'ns-resize' : 'ew-resize'\n }, \n // Create the main navigator group\n navigatorGroup = navigator.navigatorGroup = renderer\n .g('navigator')\n .attr({\n zIndex: 8,\n visibility: 'hidden'\n })\n .add();\n // Create masks, each mask will get events and fill:\n [\n !maskInside,\n maskInside,\n !maskInside\n ].forEach(function (hasMask, index) {\n var shade = renderer.rect()\n .addClass('highcharts-navigator-mask' +\n (index === 1 ? '-inside' : '-outside'))\n .add(navigatorGroup);\n if (!chart.styledMode) {\n shade.attr({\n fill: hasMask ?\n navigatorOptions.maskFill :\n 'rgba(0,0,0,0)'\n });\n if (index === 1) {\n shade.css(mouseCursor);\n }\n }\n navigator.shades[index] = shade;\n });\n // Create the outline:\n navigator.outline = renderer.path()\n .addClass('highcharts-navigator-outline')\n .add(navigatorGroup);\n if (!chart.styledMode) {\n navigator.outline.attr({\n 'stroke-width': navigatorOptions.outlineWidth,\n stroke: navigatorOptions.outlineColor\n });\n }\n // Create the handlers:\n if (navigatorOptions.handles && navigatorOptions.handles.enabled) {\n var handlesOptions_1 = navigatorOptions.handles,\n height_1 = handlesOptions_1.height,\n width_1 = handlesOptions_1.width;\n [0, 1].forEach(function (index) {\n navigator.handles[index] = renderer.symbol(handlesOptions_1.symbols[index], -width_1 / 2 - 1, 0, width_1, height_1, handlesOptions_1);\n if (chart.inverted) {\n navigator.handles[index].attr({\n rotation: 90,\n rotationOriginX: Math.floor(-width_1 / 2),\n rotationOriginY: (height_1 + width_1) / 2\n });\n }\n // zIndex = 6 for right handle, 7 for left.\n // Can't be 10, because of the tooltip in inverted chart #2908\n navigator.handles[index].attr({ zIndex: 7 - index })\n .addClass('highcharts-navigator-handle ' +\n 'highcharts-navigator-handle-' +\n ['left', 'right'][index]).add(navigatorGroup);\n if (!chart.styledMode) {\n navigator.handles[index]\n .attr({\n fill: handlesOptions_1.backgroundColor,\n stroke: handlesOptions_1.borderColor,\n 'stroke-width': handlesOptions_1.lineWidth\n })\n .css(mouseCursor);\n }\n });\n }\n };\n /**\n * Update navigator\n *\n * @private\n * @function Highcharts.Navigator#update\n *\n * @param {Highcharts.NavigatorOptions} options\n * Options to merge in when updating navigator\n */\n Navigator.prototype.update = function (options) {\n // Remove references to old navigator series in base series\n (this.series || []).forEach(function (series) {\n if (series.baseSeries) {\n delete series.baseSeries.navigatorSeries;\n }\n });\n // Destroy and rebuild navigator\n this.destroy();\n var chartOptions = this.chart.options;\n merge(true, chartOptions.navigator, options);\n this.init(this.chart);\n };\n /**\n * Render the navigator\n *\n * @private\n * @function Highcharts.Navigator#render\n * @param {number} min\n * X axis value minimum\n * @param {number} max\n * X axis value maximum\n * @param {number} [pxMin]\n * Pixel value minimum\n * @param {number} [pxMax]\n * Pixel value maximum\n */\n Navigator.prototype.render = function (min, max, pxMin, pxMax) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n pointRange = xAxis.pointRange || 0,\n scrollbarXAxis = xAxis.navigatorAxis.fake ? chart.xAxis[0] : xAxis,\n navigatorEnabled = navigator.navigatorEnabled,\n rendered = navigator.rendered,\n inverted = chart.inverted,\n minRange = chart.xAxis[0].minRange,\n maxRange = chart.xAxis[0].options.maxRange;\n var navigatorWidth,\n scrollbarLeft,\n scrollbarTop,\n scrollbarHeight = navigator.scrollbarHeight,\n navigatorSize,\n verb;\n // Don't redraw while moving the handles (#4703).\n if (this.hasDragged && !defined(pxMin)) {\n return;\n }\n min = correctFloat(min - pointRange / 2);\n max = correctFloat(max + pointRange / 2);\n // Don't render the navigator until we have data (#486, #4202, #5172).\n if (!isNumber(min) || !isNumber(max)) {\n // However, if navigator was already rendered, we may need to resize\n // it. For example hidden series, but visible navigator (#6022).\n if (rendered) {\n pxMin = 0;\n pxMax = pick(xAxis.width, scrollbarXAxis.width);\n }\n else {\n return;\n }\n }\n navigator.left = pick(xAxis.left, \n // in case of scrollbar only, without navigator\n chart.plotLeft + scrollbarHeight +\n (inverted ? chart.plotWidth : 0));\n var zoomedMax = navigator.size = navigatorSize = pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -\n 2 * scrollbarHeight);\n if (inverted) {\n navigatorWidth = scrollbarHeight;\n }\n else {\n navigatorWidth = navigatorSize + 2 * scrollbarHeight;\n }\n // Get the pixel position of the handles\n pxMin = pick(pxMin, xAxis.toPixels(min, true));\n pxMax = pick(pxMax, xAxis.toPixels(max, true));\n // Verify (#1851, #2238)\n if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {\n pxMin = 0;\n pxMax = navigatorWidth;\n }\n // Are we below the minRange? (#2618, #6191)\n var newMin = xAxis.toValue(pxMin,\n true),\n newMax = xAxis.toValue(pxMax,\n true),\n currentRange = Math.abs(correctFloat(newMax - newMin));\n if (currentRange < minRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - minRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + minRange + pointRange, true);\n }\n }\n else if (defined(maxRange) &&\n correctFloat(currentRange - pointRange) > maxRange) {\n if (this.grabbedLeft) {\n pxMin = xAxis.toPixels(newMax - maxRange - pointRange, true);\n }\n else if (this.grabbedRight) {\n pxMax = xAxis.toPixels(newMin + maxRange + pointRange, true);\n }\n }\n // Handles are allowed to cross, but never exceed the plot area\n navigator.zoomedMax = clamp(Math.max(pxMin, pxMax), 0, zoomedMax);\n navigator.zoomedMin = clamp(navigator.fixedWidth ?\n navigator.zoomedMax - navigator.fixedWidth :\n Math.min(pxMin, pxMax), 0, zoomedMax);\n navigator.range = navigator.zoomedMax - navigator.zoomedMin;\n zoomedMax = Math.round(navigator.zoomedMax);\n var zoomedMin = Math.round(navigator.zoomedMin);\n if (navigatorEnabled) {\n navigator.navigatorGroup.attr({\n visibility: 'inherit'\n });\n // Place elements\n verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n if (navigator.navigatorOptions.handles.enabled) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n if (navigator.scrollbar) {\n if (inverted) {\n scrollbarTop = navigator.top - scrollbarHeight;\n scrollbarLeft = navigator.left - scrollbarHeight +\n (navigatorEnabled || !scrollbarXAxis.opposite ? 0 :\n // Multiple axes has offsets:\n (scrollbarXAxis.titleOffset || 0) +\n // Self margin from the axis.title\n scrollbarXAxis.axisTitleMargin);\n scrollbarHeight = navigatorSize + 2 * scrollbarHeight;\n }\n else {\n scrollbarTop = navigator.top + (navigatorEnabled ?\n navigator.height :\n -scrollbarHeight);\n scrollbarLeft = navigator.left - scrollbarHeight;\n }\n // Reposition scrollbar\n navigator.scrollbar.position(scrollbarLeft, scrollbarTop, navigatorWidth, scrollbarHeight);\n // Keep scale 0-1\n navigator.scrollbar.setRange(\n // Use real value, not rounded because range can be very small\n // (#1716)\n navigator.zoomedMin / (navigatorSize || 1), navigator.zoomedMax / (navigatorSize || 1));\n }\n navigator.rendered = true;\n };\n /**\n * Set up the mouse and touch events for the navigator\n *\n * @private\n * @function Highcharts.Navigator#addMouseEvents\n */\n Navigator.prototype.addMouseEvents = function () {\n var navigator = this,\n chart = navigator.chart,\n container = chart.container;\n var eventsToUnbind = [],\n mouseMoveHandler,\n mouseUpHandler;\n /**\n * Create mouse events' handlers.\n * Make them as separate functions to enable wrapping them:\n */\n navigator.mouseMoveHandler = mouseMoveHandler = function (e) {\n navigator.onMouseMove(e);\n };\n navigator.mouseUpHandler = mouseUpHandler = function (e) {\n navigator.onMouseUp(e);\n };\n // Add shades and handles mousedown events\n eventsToUnbind = navigator.getPartsEvents('mousedown');\n // Add mouse move and mouseup events. These are bind to doc/container,\n // because Navigator.grabbedSomething flags are stored in mousedown\n // events\n eventsToUnbind.push(addEvent(chart.renderTo, 'mousemove', mouseMoveHandler), addEvent(container.ownerDocument, 'mouseup', mouseUpHandler));\n // Touch events\n if (hasTouch) {\n eventsToUnbind.push(addEvent(chart.renderTo, 'touchmove', mouseMoveHandler), addEvent(container.ownerDocument, 'touchend', mouseUpHandler));\n eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));\n }\n navigator.eventsToUnbind = eventsToUnbind;\n // Data events\n if (navigator.series && navigator.series[0]) {\n eventsToUnbind.push(addEvent(navigator.series[0].xAxis, 'foundExtremes', function () {\n chart.navigator.modifyNavigatorAxisExtremes();\n }));\n }\n };\n /**\n * Generate events for handles and masks\n *\n * @private\n * @function Highcharts.Navigator#getPartsEvents\n *\n * @param {string} eventName\n * Event name handler, 'mousedown' or 'touchstart'\n *\n * @return {Array}\n * An array of functions to remove navigator functions from the\n * events again.\n */\n Navigator.prototype.getPartsEvents = function (eventName) {\n var navigator = this,\n events = [];\n ['shades', 'handles'].forEach(function (name) {\n navigator[name].forEach(function (navigatorItem, index) {\n events.push(addEvent(navigatorItem.element, eventName, function (e) {\n navigator[name + 'Mousedown'](e, index);\n }));\n });\n });\n return events;\n };\n /**\n * Mousedown on a shaded mask, either:\n *\n * - will be stored for future drag&drop\n *\n * - will directly shift to a new range\n *\n * @private\n * @function Highcharts.Navigator#shadesMousedown\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n *\n * @param {number} index\n * Index of a mask in Navigator.shades array\n */\n Navigator.prototype.shadesMousedown = function (e, index) {\n e = this.chart.pointer.normalize(e);\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n zoomedMin = navigator.zoomedMin,\n navigatorSize = navigator.size,\n range = navigator.range;\n var navigatorPosition = navigator.left,\n chartX = e.chartX,\n fixedMax,\n fixedMin,\n ext,\n left;\n // For inverted chart, swap some options:\n if (chart.inverted) {\n chartX = e.chartY;\n navigatorPosition = navigator.top;\n }\n if (index === 1) {\n // Store information for drag&drop\n navigator.grabbedCenter = chartX;\n navigator.fixedWidth = range;\n navigator.dragOffset = chartX - zoomedMin;\n }\n else {\n // Shift the range by clicking on shaded areas\n left = chartX - navigatorPosition - range / 2;\n if (index === 0) {\n left = Math.max(0, left);\n }\n else if (index === 2 && left + range >= navigatorSize) {\n left = navigatorSize - range;\n if (navigator.reversedExtremes) {\n // #7713\n left -= range;\n fixedMin = navigator.getUnionExtremes().dataMin;\n }\n else {\n // #2293, #3543\n fixedMax = navigator.getUnionExtremes().dataMax;\n }\n }\n if (left !== zoomedMin) { // it has actually moved\n navigator.fixedWidth = range; // #1370\n ext = xAxis.navigatorAxis.toFixedRange(left, left + range, fixedMin, fixedMax);\n if (defined(ext.min)) { // #7411\n chart.xAxis[0].setExtremes(Math.min(ext.min, ext.max), Math.max(ext.min, ext.max), true, null, // auto animation\n { trigger: 'navigator' });\n }\n }\n }\n };\n /**\n * Mousedown on a handle mask.\n * Will store necessary information for drag&drop.\n *\n * @private\n * @function Highcharts.Navigator#handlesMousedown\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n * @param {number} index\n * Index of a handle in Navigator.handles array\n */\n Navigator.prototype.handlesMousedown = function (e, index) {\n e = this.chart.pointer.normalize(e);\n var navigator = this,\n chart = navigator.chart,\n baseXAxis = chart.xAxis[0], \n // For reversed axes, min and max are changed,\n // so the other extreme should be stored\n reverse = navigator.reversedExtremes;\n if (index === 0) {\n // Grab the left handle\n navigator.grabbedLeft = true;\n navigator.otherHandlePos = navigator.zoomedMax;\n navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;\n }\n else {\n // Grab the right handle\n navigator.grabbedRight = true;\n navigator.otherHandlePos = navigator.zoomedMin;\n navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;\n }\n chart.fixedRange = null;\n };\n /**\n * Mouse move event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseMove\n *\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseMove = function (e) {\n var navigator = this,\n chart = navigator.chart,\n navigatorSize = navigator.navigatorSize,\n range = navigator.range,\n dragOffset = navigator.dragOffset,\n inverted = chart.inverted;\n var left = navigator.left,\n chartX;\n // In iOS, a mousemove event with e.pageX === 0 is fired when holding\n // the finger down in the center of the scrollbar. This should be\n // ignored.\n if (!e.touches || e.touches[0].pageX !== 0) { // #4696\n e = chart.pointer.normalize(e);\n chartX = e.chartX;\n // Swap some options for inverted chart\n if (inverted) {\n left = navigator.top;\n chartX = e.chartY;\n }\n // Drag left handle or top handle\n if (navigator.grabbedLeft) {\n navigator.hasDragged = true;\n navigator.render(0, 0, chartX - left, navigator.otherHandlePos);\n // Drag right handle or bottom handle\n }\n else if (navigator.grabbedRight) {\n navigator.hasDragged = true;\n navigator.render(0, 0, navigator.otherHandlePos, chartX - left);\n // Drag scrollbar or open area in navigator\n }\n else if (navigator.grabbedCenter) {\n navigator.hasDragged = true;\n if (chartX < dragOffset) { // outside left\n chartX = dragOffset;\n // outside right\n }\n else if (chartX >\n navigatorSize + dragOffset - range) {\n chartX = navigatorSize + dragOffset - range;\n }\n navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);\n }\n if (navigator.hasDragged &&\n navigator.scrollbar &&\n pick(navigator.scrollbar.options.liveRedraw, \n // By default, don't run live redraw on VML, on touch\n // devices or if the chart is in boost.\n H.svg &&\n !isTouchDevice &&\n !this.chart.boosted)) {\n e.DOMType = e.type; // DOMType is for IE8\n setTimeout(function () {\n navigator.onMouseUp(e);\n }, 0);\n }\n }\n };\n /**\n * Mouse up event based on x/y mouse position.\n *\n * @private\n * @function Highcharts.Navigator#onMouseUp\n * @param {Highcharts.PointerEventObject} e\n * Mouse event\n */\n Navigator.prototype.onMouseUp = function (e) {\n var navigator = this,\n chart = navigator.chart,\n xAxis = navigator.xAxis,\n scrollbar = navigator.scrollbar,\n DOMEvent = e.DOMEvent || e,\n inverted = chart.inverted,\n verb = navigator.rendered && !navigator.hasDragged ?\n 'animate' : 'attr';\n var zoomedMax,\n zoomedMin,\n unionExtremes,\n fixedMin,\n fixedMax,\n ext;\n if (\n // MouseUp is called for both, navigator and scrollbar (that order),\n // which causes calling afterSetExtremes twice. Prevent first call\n // by checking if scrollbar is going to set new extremes (#6334)\n (navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||\n e.trigger === 'scrollbar') {\n unionExtremes = navigator.getUnionExtremes();\n // When dragging one handle, make sure the other one doesn't change\n if (navigator.zoomedMin === navigator.otherHandlePos) {\n fixedMin = navigator.fixedExtreme;\n }\n else if (navigator.zoomedMax === navigator.otherHandlePos) {\n fixedMax = navigator.fixedExtreme;\n }\n // Snap to right edge (#4076)\n if (navigator.zoomedMax === navigator.size) {\n fixedMax = navigator.reversedExtremes ?\n unionExtremes.dataMin :\n unionExtremes.dataMax;\n }\n // Snap to left edge (#7576)\n if (navigator.zoomedMin === 0) {\n fixedMin = navigator.reversedExtremes ?\n unionExtremes.dataMax :\n unionExtremes.dataMin;\n }\n ext = xAxis.navigatorAxis.toFixedRange(navigator.zoomedMin, navigator.zoomedMax, fixedMin, fixedMax);\n if (defined(ext.min)) {\n chart.xAxis[0].setExtremes(Math.min(ext.min, ext.max), Math.max(ext.min, ext.max), true, \n // Run animation when clicking buttons, scrollbar track etc,\n // but not when dragging handles or scrollbar\n navigator.hasDragged ? false : null, {\n trigger: 'navigator',\n triggerOp: 'navigator-drag',\n DOMEvent: DOMEvent // #1838\n });\n }\n }\n if (e.DOMType !== 'mousemove' &&\n e.DOMType !== 'touchmove') {\n navigator.grabbedLeft = navigator.grabbedRight =\n navigator.grabbedCenter = navigator.fixedWidth =\n navigator.fixedExtreme = navigator.otherHandlePos =\n navigator.hasDragged = navigator.dragOffset = null;\n }\n // Update position of navigator shades, outline and handles (#12573)\n if (navigator.navigatorEnabled &&\n isNumber(navigator.zoomedMin) &&\n isNumber(navigator.zoomedMax)) {\n zoomedMin = Math.round(navigator.zoomedMin);\n zoomedMax = Math.round(navigator.zoomedMax);\n if (navigator.shades) {\n navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.outline) {\n navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n }\n if (navigator.navigatorOptions.handles.enabled &&\n Object.keys(navigator.handles).length ===\n navigator.handles.length) {\n navigator.drawHandle(zoomedMin, 0, inverted, verb);\n navigator.drawHandle(zoomedMax, 1, inverted, verb);\n }\n }\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n *\n * @private\n * @function Highcharts.Navigator#removeEvents\n */\n Navigator.prototype.removeEvents = function () {\n if (this.eventsToUnbind) {\n this.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n this.eventsToUnbind = void 0;\n }\n this.removeBaseSeriesEvents();\n };\n /**\n * Remove data events.\n *\n * @private\n * @function Highcharts.Navigator#removeBaseSeriesEvents\n */\n Navigator.prototype.removeBaseSeriesEvents = function () {\n var baseSeries = this.baseSeries || [];\n if (this.navigatorEnabled && baseSeries[0]) {\n if (this.navigatorOptions.adaptToUpdatedData !== false) {\n baseSeries.forEach(function (series) {\n removeEvent(series, 'updatedData', this.updatedDataHandler);\n }, this);\n }\n // We only listen for extremes-events on the first baseSeries\n if (baseSeries[0].xAxis) {\n removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);\n }\n }\n };\n /**\n * Initialize the Navigator object\n *\n * @private\n * @function Highcharts.Navigator#init\n */\n Navigator.prototype.init = function (chart) {\n var chartOptions = chart.options,\n navigatorOptions = chartOptions.navigator || {},\n navigatorEnabled = navigatorOptions.enabled,\n scrollbarOptions = chartOptions.scrollbar || {},\n scrollbarEnabled = scrollbarOptions.enabled,\n height = navigatorEnabled && navigatorOptions.height || 0,\n scrollbarHeight = scrollbarEnabled && scrollbarOptions.height || 0;\n this.handles = [];\n this.shades = [];\n this.chart = chart;\n this.setBaseSeries();\n this.height = height;\n this.scrollbarHeight = scrollbarHeight;\n this.scrollbarEnabled = scrollbarEnabled;\n this.navigatorEnabled = navigatorEnabled;\n this.navigatorOptions = navigatorOptions;\n this.scrollbarOptions = scrollbarOptions;\n this.outlineHeight = height + scrollbarHeight;\n this.opposite = pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262\n var navigator = this,\n baseSeries = navigator.baseSeries,\n xAxisIndex = chart.xAxis.length,\n yAxisIndex = chart.yAxis.length,\n baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis ||\n chart.xAxis[0] || { options: {} };\n chart.isDirtyBox = true;\n if (navigator.navigatorEnabled) {\n // an x axis is required for scrollbar also\n navigator.xAxis = new Axis(chart, merge({\n // inherit base xAxis' break and ordinal options\n breaks: baseXaxis.options.breaks,\n ordinal: baseXaxis.options.ordinal\n }, navigatorOptions.xAxis, {\n id: 'navigator-x-axis',\n yAxis: 'navigator-y-axis',\n isX: true,\n type: 'datetime',\n index: xAxisIndex,\n isInternal: true,\n offset: 0,\n keepOrdinalPadding: true,\n startOnTick: false,\n endOnTick: false,\n minPadding: 0,\n maxPadding: 0,\n zoomEnabled: false\n }, chart.inverted ? {\n offsets: [scrollbarHeight, 0, -scrollbarHeight, 0],\n width: height\n } : {\n offsets: [0, -scrollbarHeight, 0, scrollbarHeight],\n height: height\n }));\n navigator.yAxis = new Axis(chart, merge(navigatorOptions.yAxis, {\n id: 'navigator-y-axis',\n alignTicks: false,\n offset: 0,\n index: yAxisIndex,\n isInternal: true,\n reversed: pick((navigatorOptions.yAxis &&\n navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false),\n zoomEnabled: false\n }, chart.inverted ? {\n width: height\n } : {\n height: height\n }));\n // If we have a base series, initialize the navigator series\n if (baseSeries || navigatorOptions.series.data) {\n navigator.updateNavigatorSeries(false);\n // If not, set up an event to listen for added series\n }\n else if (chart.series.length === 0) {\n navigator.unbindRedraw = addEvent(chart, 'beforeRedraw', function () {\n // We've got one, now add it as base\n if (chart.series.length > 0 && !navigator.series) {\n navigator.setBaseSeries();\n navigator.unbindRedraw(); // reset\n }\n });\n }\n navigator.reversedExtremes = (chart.inverted && !navigator.xAxis.reversed) || (!chart.inverted && navigator.xAxis.reversed);\n // Render items, so we can bind events to them:\n navigator.renderElements();\n // Add mouse events\n navigator.addMouseEvents();\n // in case of scrollbar only, fake an x axis to get translation\n }\n else {\n navigator.xAxis = {\n chart: chart,\n navigatorAxis: {\n fake: true\n },\n translate: function (value, reverse) {\n var axis = chart.xAxis[0], ext = axis.getExtremes(), scrollTrackWidth = axis.len - 2 * scrollbarHeight, min = numExt('min', axis.options.min, ext.dataMin), valueRange = numExt('max', axis.options.max, ext.dataMax) - min;\n return reverse ?\n // from pixel to value\n (value * valueRange / scrollTrackWidth) + min :\n // from value to pixel\n scrollTrackWidth * (value - min) / valueRange;\n },\n toPixels: function (value) {\n return this.translate(value);\n },\n toValue: function (value) {\n return this.translate(value, true);\n }\n };\n navigator.xAxis.navigatorAxis.axis = navigator.xAxis;\n navigator.xAxis.navigatorAxis.toFixedRange = (NavigatorAxisAdditions.prototype.toFixedRange.bind(navigator.xAxis.navigatorAxis));\n }\n // Initialize the scrollbar\n if (chart.options.scrollbar.enabled) {\n chart.scrollbar = navigator.scrollbar = new Scrollbar(chart.renderer, merge(chart.options.scrollbar, {\n margin: navigator.navigatorEnabled ? 0 : 10,\n vertical: chart.inverted\n }), chart);\n addEvent(navigator.scrollbar, 'changed', function (e) {\n var range = navigator.size,\n to = range * this.to,\n from = range * this.from;\n navigator.hasDragged = navigator.scrollbar.hasDragged;\n navigator.render(0, 0, from, to);\n if (this.shouldUpdateExtremes(e.DOMType)) {\n setTimeout(function () {\n navigator.onMouseUp(e);\n });\n }\n });\n }\n // Add data events\n navigator.addBaseSeriesEvents();\n // Add redraw events\n navigator.addChartEvents();\n };\n /**\n * Get the union data extremes of the chart - the outer data extremes of the\n * base X axis and the navigator axis.\n *\n * @private\n * @function Highcharts.Navigator#getUnionExtremes\n */\n Navigator.prototype.getUnionExtremes = function (returnFalseOnNoBaseSeries) {\n var baseAxis = this.chart.xAxis[0],\n navAxis = this.xAxis,\n navAxisOptions = navAxis.options,\n baseAxisOptions = baseAxis.options;\n var ret;\n if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {\n ret = {\n dataMin: pick(// #4053\n navAxisOptions && navAxisOptions.min, numExt('min', baseAxisOptions.min, baseAxis.dataMin, navAxis.dataMin, navAxis.min)),\n dataMax: pick(navAxisOptions && navAxisOptions.max, numExt('max', baseAxisOptions.max, baseAxis.dataMax, navAxis.dataMax, navAxis.max))\n };\n }\n return ret;\n };\n /**\n * Set the base series and update the navigator series from this. With a bit\n * of modification we should be able to make this an API method to be called\n * from the outside\n *\n * @private\n * @function Highcharts.Navigator#setBaseSeries\n * @param {Highcharts.SeriesOptionsType} [baseSeriesOptions]\n * Additional series options for a navigator\n * @param {boolean} [redraw]\n * Whether to redraw after update.\n */\n Navigator.prototype.setBaseSeries = function (baseSeriesOptions, redraw) {\n var chart = this.chart,\n baseSeries = this.baseSeries = [];\n baseSeriesOptions = (baseSeriesOptions ||\n chart.options && chart.options.navigator.baseSeries ||\n (chart.series.length ?\n // Find the first non-navigator series (#8430)\n find(chart.series, function (s) { return (!s.options.isInternal); }).index :\n 0));\n // Iterate through series and add the ones that should be shown in\n // navigator.\n (chart.series || []).forEach(function (series, i) {\n if (\n // Don't include existing nav series\n !series.options.isInternal &&\n (series.options.showInNavigator ||\n (i === baseSeriesOptions ||\n series.options.id === baseSeriesOptions) &&\n series.options.showInNavigator !== false)) {\n baseSeries.push(series);\n }\n });\n // When run after render, this.xAxis already exists\n if (this.xAxis && !this.xAxis.navigatorAxis.fake) {\n this.updateNavigatorSeries(true, redraw);\n }\n };\n /**\n * Update series in the navigator from baseSeries, adding new if does not\n * exist.\n *\n * @private\n * @function Highcharts.Navigator.updateNavigatorSeries\n */\n Navigator.prototype.updateNavigatorSeries = function (addEvents, redraw) {\n var navigator = this,\n chart = navigator.chart,\n baseSeries = navigator.baseSeries,\n navSeriesMixin = {\n enableMouseTracking: false,\n index: null,\n linkedTo: null,\n group: 'nav',\n padXAxis: false,\n xAxis: 'navigator-x-axis',\n yAxis: 'navigator-y-axis',\n showInLegend: false,\n stacking: void 0,\n isInternal: true,\n states: {\n inactive: {\n opacity: 1\n }\n }\n }, \n // Remove navigator series that are no longer in the baseSeries\n navigatorSeries = navigator.series =\n (navigator.series || []).filter(function (navSeries) {\n var base = navSeries.baseSeries;\n if (baseSeries.indexOf(base) < 0) { // Not in array\n // If there is still a base series connected to this\n // series, remove event handler and reference.\n if (base) {\n removeEvent(base, 'updatedData', navigator.updatedDataHandler);\n delete base.navigatorSeries;\n }\n // Kill the nav series. It may already have been\n // destroyed (#8715).\n if (navSeries.chart) {\n navSeries.destroy();\n }\n return false;\n }\n return true;\n });\n var baseOptions,\n mergedNavSeriesOptions,\n chartNavigatorSeriesOptions = navigator.navigatorOptions.series,\n baseNavigatorOptions;\n // Go through each base series and merge the options to create new\n // series\n if (baseSeries && baseSeries.length) {\n baseSeries.forEach(function (base) {\n var linkedNavSeries = base.navigatorSeries,\n userNavOptions = extend(\n // Grab color and visibility from base as default\n {\n color: base.color,\n visible: base.visible\n }, !isArray(chartNavigatorSeriesOptions) ?\n chartNavigatorSeriesOptions :\n defaultOptions.navigator.series);\n // Don't update if the series exists in nav and we have disabled\n // adaptToUpdatedData.\n if (linkedNavSeries &&\n navigator.navigatorOptions.adaptToUpdatedData === false) {\n return;\n }\n navSeriesMixin.name = 'Navigator ' + baseSeries.length;\n baseOptions = base.options || {};\n baseNavigatorOptions = baseOptions.navigatorOptions || {};\n // The dataLabels options are not merged correctly\n // if the settings are an array, #13847.\n userNavOptions.dataLabels = splat(userNavOptions.dataLabels);\n mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);\n // Once nav series type is resolved, pick correct pointRange\n mergedNavSeriesOptions.pointRange = pick(\n // Stricte set pointRange in options\n userNavOptions.pointRange, baseNavigatorOptions.pointRange, \n // Fallback to default values, e.g. `null` for column\n defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line'].pointRange);\n // Merge data separately. Do a slice to avoid mutating the\n // navigator options from base series (#4923).\n var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;\n navigator.hasNavigatorData =\n navigator.hasNavigatorData || !!navigatorSeriesData;\n mergedNavSeriesOptions.data =\n navigatorSeriesData ||\n baseOptions.data && baseOptions.data.slice(0);\n // Update or add the series\n if (linkedNavSeries && linkedNavSeries.options) {\n linkedNavSeries.update(mergedNavSeriesOptions, redraw);\n }\n else {\n base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);\n base.navigatorSeries.baseSeries = base; // Store ref\n navigatorSeries.push(base.navigatorSeries);\n }\n });\n }\n // If user has defined data (and no base series) or explicitly defined\n // navigator.series as an array, we create these series on top of any\n // base series.\n if (chartNavigatorSeriesOptions.data &&\n !(baseSeries && baseSeries.length) ||\n isArray(chartNavigatorSeriesOptions)) {\n navigator.hasNavigatorData = false;\n // Allow navigator.series to be an array\n chartNavigatorSeriesOptions =\n splat(chartNavigatorSeriesOptions);\n chartNavigatorSeriesOptions.forEach(function (userSeriesOptions, i) {\n navSeriesMixin.name =\n 'Navigator ' + (navigatorSeries.length + 1);\n mergedNavSeriesOptions = merge(defaultOptions.navigator.series, {\n // Since we don't have a base series to pull color from,\n // try to fake it by using color from series with same\n // index. Otherwise pull from the colors array. We need\n // an explicit color as otherwise updates will increment\n // color counter and we'll get a new color for each\n // update of the nav series.\n color: chart.series[i] &&\n !chart.series[i].options.isInternal &&\n chart.series[i].color ||\n chart.options.colors[i] ||\n chart.options.colors[0]\n }, navSeriesMixin, userSeriesOptions);\n mergedNavSeriesOptions.data = userSeriesOptions.data;\n if (mergedNavSeriesOptions.data) {\n navigator.hasNavigatorData = true;\n navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));\n }\n });\n }\n if (addEvents) {\n this.addBaseSeriesEvents();\n }\n };\n /**\n * Add data events.\n * For example when main series is updated we need to recalculate extremes\n *\n * @private\n * @function Highcharts.Navigator#addBaseSeriesEvent\n */\n Navigator.prototype.addBaseSeriesEvents = function () {\n var _this = this;\n var navigator = this,\n baseSeries = navigator.baseSeries || [];\n // Bind modified extremes event to first base's xAxis only.\n // In event of > 1 base-xAxes, the navigator will ignore those.\n // Adding this multiple times to the same axis is no problem, as\n // duplicates should be discarded by the browser.\n if (baseSeries[0] && baseSeries[0].xAxis) {\n baseSeries[0].eventsToUnbind.push(addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes));\n }\n baseSeries.forEach(function (base) {\n // Link base series show/hide to navigator series visibility\n base.eventsToUnbind.push(addEvent(base, 'show', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(true, false);\n }\n }));\n base.eventsToUnbind.push(addEvent(base, 'hide', function () {\n if (this.navigatorSeries) {\n this.navigatorSeries.setVisible(false, false);\n }\n }));\n // Respond to updated data in the base series, unless explicitily\n // not adapting to data changes.\n if (_this.navigatorOptions.adaptToUpdatedData !== false) {\n if (base.xAxis) {\n base.eventsToUnbind.push(addEvent(base, 'updatedData', _this.updatedDataHandler));\n }\n }\n // Handle series removal\n base.eventsToUnbind.push(addEvent(base, 'remove', function () {\n if (this.navigatorSeries) {\n erase(navigator.series, this.navigatorSeries);\n if (defined(this.navigatorSeries.options)) {\n this.navigatorSeries.remove(false);\n }\n delete this.navigatorSeries;\n }\n }));\n });\n };\n /**\n * Get minimum from all base series connected to the navigator\n * @private\n * @param {number} currentSeriesMin\n * Minium from the current series\n * @return {number}\n * Minimum from all series\n */\n Navigator.prototype.getBaseSeriesMin = function (currentSeriesMin) {\n return this.baseSeries.reduce(function (min, series) {\n // (#10193)\n return Math.min(min, series.xData && series.xData.length ?\n series.xData[0] : min);\n }, currentSeriesMin);\n };\n /**\n * Set the navigator x axis extremes to reflect the total. The navigator\n * extremes should always be the extremes of the union of all series in the\n * chart as well as the navigator series.\n *\n * @private\n * @function Highcharts.Navigator#modifyNavigatorAxisExtremes\n */\n Navigator.prototype.modifyNavigatorAxisExtremes = function () {\n var xAxis = this.xAxis;\n if (typeof xAxis.getExtremes !== 'undefined') {\n var unionExtremes = this.getUnionExtremes(true);\n if (unionExtremes &&\n (unionExtremes.dataMin !== xAxis.min ||\n unionExtremes.dataMax !== xAxis.max)) {\n xAxis.min = unionExtremes.dataMin;\n xAxis.max = unionExtremes.dataMax;\n }\n }\n };\n /**\n * Hook to modify the base axis extremes with information from the Navigator\n *\n * @private\n * @function Highcharts.Navigator#modifyBaseAxisExtremes\n */\n Navigator.prototype.modifyBaseAxisExtremes = function () {\n var baseXAxis = this,\n navigator = baseXAxis.chart.navigator,\n baseExtremes = baseXAxis.getExtremes(),\n baseMin = baseExtremes.min,\n baseMax = baseExtremes.max,\n baseDataMin = baseExtremes.dataMin,\n baseDataMax = baseExtremes.dataMax,\n range = baseMax - baseMin,\n stickToMin = navigator.stickToMin,\n stickToMax = navigator.stickToMax,\n overscroll = pick(baseXAxis.options.overscroll, 0),\n navigatorSeries = navigator.series && navigator.series[0],\n hasSetExtremes = !!baseXAxis.setExtremes, \n // When the extremes have been set by range selector button, don't\n // stick to min or max. The range selector buttons will handle the\n // extremes. (#5489)\n unmutable = baseXAxis.eventArgs &&\n baseXAxis.eventArgs.trigger === 'rangeSelectorButton';\n var newMax,\n newMin;\n if (!unmutable) {\n // If the zoomed range is already at the min, move it to the right\n // as new data comes in\n if (stickToMin) {\n newMin = baseDataMin;\n newMax = newMin + range;\n }\n // If the zoomed range is already at the max, move it to the right\n // as new data comes in\n if (stickToMax) {\n newMax = baseDataMax + overscroll;\n // If stickToMin is true, the new min value is set above\n if (!stickToMin) {\n newMin = Math.max(baseDataMin, // don't go below data extremes (#13184)\n newMax - range, navigator.getBaseSeriesMin(navigatorSeries && navigatorSeries.xData ?\n navigatorSeries.xData[0] :\n -Number.MAX_VALUE));\n }\n }\n // Update the extremes\n if (hasSetExtremes && (stickToMin || stickToMax)) {\n if (isNumber(newMin)) {\n baseXAxis.min = baseXAxis.userMin = newMin;\n baseXAxis.max = baseXAxis.userMax = newMax;\n }\n }\n }\n // Reset\n navigator.stickToMin =\n navigator.stickToMax = null;\n };\n /**\n * Handler for updated data on the base series. When data is modified, the\n * navigator series must reflect it. This is called from the Chart.redraw\n * function before axis and series extremes are computed.\n *\n * @private\n * @function Highcharts.Navigator#updateDataHandler\n */\n Navigator.prototype.updatedDataHandler = function () {\n var navigator = this.chart.navigator,\n baseSeries = this,\n navigatorSeries = this.navigatorSeries,\n shouldStickToMax = navigator.reversedExtremes ?\n Math.round(navigator.zoomedMin) === 0 :\n Math.round(navigator.zoomedMax) >= Math.round(navigator.size);\n // If the scrollbar is scrolled all the way to the right, keep right as\n // new data comes in, unless user set navigator.stickToMax to false.\n navigator.stickToMax = pick(this.chart.options.navigator &&\n this.chart.options.navigator.stickToMax, shouldStickToMax);\n navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);\n // Set the navigator series data to the new data of the base series\n if (navigatorSeries && !navigator.hasNavigatorData) {\n navigatorSeries.options.pointStart = baseSeries.xData[0];\n navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414\n }\n };\n /**\n * Detect if the zoomed area should stick to the minimum, #14742.\n *\n * @private\n * @function Highcharts.Navigator#shouldStickToMin\n */\n Navigator.prototype.shouldStickToMin = function (baseSeries, navigator) {\n var xDataMin = navigator.getBaseSeriesMin(baseSeries.xData[0]),\n xAxis = baseSeries.xAxis,\n max = xAxis.max,\n min = xAxis.min,\n range = xAxis.options.range;\n var stickToMin = true;\n if (isNumber(max) && isNumber(min)) {\n // If range declared, stick to the minimum only if the range\n // is smaller than the data set range.\n if (range && max - xDataMin > 0) {\n stickToMin = max - xDataMin < range;\n }\n else {\n // If the current axis minimum falls outside the new\n // updated dataset, we must adjust.\n stickToMin = min <= xDataMin;\n }\n }\n else {\n stickToMin = false; // #15864\n }\n return stickToMin;\n };\n /**\n * Add chart events, like redrawing navigator, when chart requires that.\n *\n * @private\n * @function Highcharts.Navigator#addChartEvents\n */\n Navigator.prototype.addChartEvents = function () {\n if (!this.eventsToUnbind) {\n this.eventsToUnbind = [];\n }\n this.eventsToUnbind.push(\n // Move the scrollbar after redraw, like after data updata even if\n // axes don't redraw\n addEvent(this.chart, 'redraw', function () {\n var navigator = this.navigator,\n xAxis = navigator && (navigator.baseSeries &&\n navigator.baseSeries[0] &&\n navigator.baseSeries[0].xAxis ||\n this.xAxis[0]); // #5709, #13114\n if (xAxis) {\n navigator.render(xAxis.min,\n xAxis.max);\n }\n }), \n // Make room for the navigator, can be placed around the chart:\n addEvent(this.chart, 'getMargins', function () {\n var chart = this,\n navigator = chart.navigator,\n marginName = navigator.opposite ?\n 'plotTop' : 'marginBottom';\n if (chart.inverted) {\n marginName = navigator.opposite ?\n 'marginRight' : 'plotLeft';\n }\n chart[marginName] =\n (chart[marginName] || 0) + (navigator.navigatorEnabled || !chart.inverted ?\n navigator.outlineHeight :\n 0) + navigator.navigatorOptions.margin;\n }));\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.Navigator#destroy\n */\n Navigator.prototype.destroy = function () {\n var _this = this;\n // Disconnect events added in addEvents\n this.removeEvents();\n if (this.xAxis) {\n erase(this.chart.xAxis, this.xAxis);\n erase(this.chart.axes, this.xAxis);\n }\n if (this.yAxis) {\n erase(this.chart.yAxis, this.yAxis);\n erase(this.chart.axes, this.yAxis);\n }\n // Destroy series\n (this.series || []).forEach(function (s) {\n if (s.destroy) {\n s.destroy();\n }\n });\n // Destroy properties\n [\n 'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',\n 'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',\n 'rendered'\n ].forEach(function (prop) {\n if (_this[prop] && _this[prop].destroy) {\n _this[prop].destroy();\n }\n _this[prop] = null;\n });\n // Destroy elements in collection\n [this.handles].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n };\n return Navigator;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Navigator;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelectorDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Declarations\n *\n * */\n /**\n * Language object. The language object is global and it can't be set\n * on each chart initialization. Instead, use `Highcharts.setOptions` to\n * set it before any chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n *\n * @optionparent lang\n */\n var lang = {\n /**\n * The text for the label for the range selector buttons.\n *\n * @product highstock gantt\n */\n rangeSelectorZoom: 'Zoom',\n /**\n * The text for the label for the \"from\" input box in the range\n * selector. Since v9.0,\n this string is empty as the label is not\n * rendered by default.\n *\n * @product highstock gantt\n */\n rangeSelectorFrom: '',\n /**\n * The text for the label for the \"to\" input box in the range selector.\n *\n * @product highstock gantt\n */\n rangeSelectorTo: '→'\n };\n /**\n * The range selector is a tool for selecting ranges to display within\n * the chart. It provides buttons to select preconfigured ranges in\n * the chart, like 1 day, 1 week, 1 month etc. It also provides input\n * boxes where min and max dates can be manually input.\n *\n * @product highstock gantt\n * @optionparent rangeSelector\n */\n var rangeSelector = {\n /**\n * Whether to enable all buttons from the start. By default buttons are\n * only enabled if the corresponding time range exists on the X axis,\n * but enabling all buttons allows for dynamically loading different\n * time ranges.\n *\n * @sample {highstock} stock/rangeselector/allbuttonsenabled-true/\n * All buttons enabled\n *\n * @since 2.0.3\n */\n allButtonsEnabled: false,\n /**\n * An array of configuration objects for the buttons.\n *\n * Defaults to:\n * ```js\n * buttons: [{\n * type: 'month',\n * count: 1,\n * text: '1m',\n * title: 'View 1 month'\n * }, {\n * type: 'month',\n * count: 3,\n * text: '3m',\n * title: 'View 3 months'\n * }, {\n * type: 'month',\n * count: 6,\n * text: '6m',\n * title: 'View 6 months'\n * }, {\n * type: 'ytd',\n * text: 'YTD',\n * title: 'View year to date'\n * }, {\n * type: 'year',\n * count: 1,\n * text: '1y',\n * title: 'View 1 year'\n * }, {\n * type: 'all',\n * text: 'All',\n * title: 'View all'\n * }]\n * ```\n *\n * @sample {highstock} stock/rangeselector/datagrouping/\n * Data grouping by buttons\n *\n * @type {Array<*>}\n */\n buttons: void 0,\n /**\n * How many units of the defined type the button should span. If `type`\n * is \"month\" and `count` is 3,\n the button spans three months.\n *\n * @type {number}\n * @default 1\n * @apioption rangeSelector.buttons.count\n */\n /**\n * Fires when clicking on the rangeSelector button. One parameter,\n * event,\n is passed to the function,\n containing common event\n * information.\n *\n * ```js\n * click: function(e) {\n * console.log(this);\n * }\n * ```\n *\n * Return false to stop default button's click action.\n *\n * @sample {highstock} stock/rangeselector/button-click/\n * Click event on the button\n *\n * @type {Highcharts.RangeSelectorClickCallbackFunction}\n * @apioption rangeSelector.buttons.events.click\n */\n /**\n * Additional range (in milliseconds) added to the end of the calculated\n * time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMax\n */\n /**\n * Additional range (in milliseconds) added to the start of the\n * calculated time span.\n *\n * @sample {highstock} stock/rangeselector/min-max-offsets/\n * Button offsets\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @apioption rangeSelector.buttons.offsetMin\n */\n /**\n * When buttons apply dataGrouping on a series, by default zooming\n * in/out will deselect buttons and unset dataGrouping. Enable this\n * option to keep buttons selected when extremes change.\n *\n * @sample {highstock} stock/rangeselector/preserve-datagrouping/\n * Different preserveDataGrouping settings\n *\n * @type {boolean}\n * @default false\n * @since 6.1.2\n * @apioption rangeSelector.buttons.preserveDataGrouping\n */\n /**\n * A custom data grouping object for each button.\n *\n * @see [series.dataGrouping](#plotOptions.series.dataGrouping)\n *\n * @sample {highstock} stock/rangeselector/datagrouping/\n * Data grouping by range selector buttons\n *\n * @type {*}\n * @extends plotOptions.series.dataGrouping\n * @apioption rangeSelector.buttons.dataGrouping\n */\n /**\n * The text for the button itself.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.text\n */\n /**\n * Explanation for the button, shown as a tooltip on hover, and used by\n * assistive technology.\n *\n * @type {string}\n * @apioption rangeSelector.buttons.title\n */\n /**\n * Defined the time span for the button. Can be one of `millisecond`,\n * `second`, `minute`, `hour`, `day`, `week`, `month`, `year`, `ytd`,\n * and `all`.\n *\n * @type {Highcharts.RangeSelectorButtonTypeValue}\n * @apioption rangeSelector.buttons.type\n */\n /**\n * The space in pixels between the buttons in the range selector.\n */\n buttonSpacing: 5,\n /**\n * Whether to collapse the range selector buttons into a dropdown when\n * there is not enough room to show everything in a single row, instead\n * of dividing the range selector into multiple rows.\n * Can be one of the following:\n * - `always`: Always collapse\n * - `responsive`: Only collapse when there is not enough room\n * - `never`: Never collapse\n *\n * @sample {highstock} stock/rangeselector/dropdown/\n * Dropdown option\n *\n * @validvalue [\"always\", \"responsive\", \"never\"]\n * @since 9.0.0\n */\n dropdown: 'responsive',\n /**\n * Enable or disable the range selector. Default to `true` for stock\n * charts, using the `stockChart` factory.\n *\n * @sample {highstock} stock/rangeselector/enabled/\n * Disable the range selector\n *\n * @type {boolean|undefined}\n * @default {highstock} true\n */\n enabled: void 0,\n /**\n * The vertical alignment of the rangeselector box. Allowed properties\n * are `top`, `middle`, `bottom`.\n *\n * @sample {highstock} stock/rangeselector/vertical-align-middle/\n * Middle\n * @sample {highstock} stock/rangeselector/vertical-align-bottom/\n * Bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 6.0.0\n */\n verticalAlign: 'top',\n /**\n * A collection of attributes for the buttons. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n * a collection of CSS properties for the text.\n *\n * The object can also be extended with states, so you can set\n * presentational options for `hover`, `select` or `disabled` button\n * states.\n *\n * CSS styles for the text label.\n *\n * In styled mode, the buttons are styled by the\n * `.highcharts-range-selector-buttons .highcharts-button` rule with its\n * different states.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.SVGAttributes}\n */\n buttonTheme: {\n /** @ignore */\n width: 28,\n /** @ignore */\n height: 18,\n /** @ignore */\n padding: 2,\n /** @ignore */\n zIndex: 7 // #484, #852\n },\n /**\n * When the rangeselector is floating, the plot area does not reserve\n * space for it. This opens for positioning anywhere on the chart.\n *\n * @sample {highstock} stock/rangeselector/floating/\n * Placing the range selector between the plot area and the\n * navigator\n *\n * @since 6.0.0\n */\n floating: false,\n /**\n * The x offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n x: 0,\n /**\n * The y offset of the range selector relative to its horizontal\n * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @since 6.0.0\n */\n y: 0,\n /**\n * Deprecated. The height of the range selector. Currently it is\n * calculated dynamically.\n *\n * @deprecated\n * @type {number|undefined}\n * @since 2.1.9\n */\n height: void 0,\n /**\n * The border color of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.ColorString}\n * @since 1.3.7\n */\n inputBoxBorderColor: 'none',\n /**\n * The pixel height of the date input boxes.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @since 1.3.7\n */\n inputBoxHeight: 17,\n /**\n * The pixel width of the date input boxes. When `undefined`, the width\n * is fitted to the rendered content.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {number|undefined}\n * @since 1.3.7\n */\n inputBoxWidth: void 0,\n /**\n * The date format in the input boxes when not selected for editing.\n * Defaults to `%b %e, %Y`.\n *\n * This is used to determine which type of input to show,\n * `datetime-local`, `date` or `time` and falling back to `text` when\n * the browser does not support the input type or the format contains\n * milliseconds.\n *\n * @sample {highstock} stock/rangeselector/input-type/\n * Input types\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputDateFormat: '%b %e, %Y',\n /**\n * A custom callback function to parse values entered in the input boxes\n * and return a valid JavaScript time as milliseconds since 1970.\n * The first argument passed is a value to parse,\n * second is a boolean indicating use of the UTC time.\n *\n * This will only get called for inputs of type `text`. Since v8.2.3,\n * the input type is dynamically determined based on the granularity\n * of the `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n * @type {Highcharts.RangeSelectorParseCallbackFunction}\n * @since 1.3.3\n */\n inputDateParser: void 0,\n /**\n * The date format in the input boxes when they are selected for\n * editing. This must be a format that is recognized by JavaScript\n * Date.parse.\n *\n * This will only be used for inputs of type `text`. Since v8.2.3,\n * the input type is dynamically determined based on the granularity\n * of the `inputDateFormat` and the browser support.\n *\n * @sample {highstock} stock/rangeselector/input-format/\n * Milliseconds in the range selector\n *\n */\n inputEditDateFormat: '%Y-%m-%d',\n /**\n * Enable or disable the date input boxes.\n */\n inputEnabled: true,\n /**\n * Positioning for the input boxes. Allowed properties are `align`,\n * `x` and `y`.\n *\n * @since 1.2.4\n */\n inputPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-position/\n * Alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'right',\n /**\n * X offset of the input row.\n */\n x: 0,\n /**\n * Y offset of the input row.\n */\n y: 0\n },\n /**\n * The space in pixels between the labels and the date input boxes in\n * the range selector.\n *\n * @since 9.0.0\n */\n inputSpacing: 5,\n /**\n * The index of the button to appear pre-selected.\n *\n * @type {number}\n */\n selected: void 0,\n /**\n * Positioning for the button row.\n *\n * @since 1.2.4\n */\n buttonPosition: {\n /**\n * The alignment of the input box. Allowed properties are `left`,\n * `center`, `right`.\n *\n * @sample {highstock} stock/rangeselector/input-button-position/\n * Alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 6.0.0\n */\n align: 'left',\n /**\n * X offset of the button row.\n */\n x: 0,\n /**\n * Y offset of the button row.\n */\n y: 0\n },\n /**\n * CSS for the HTML inputs in the range selector.\n *\n * In styled mode, the inputs are styled by the\n * `.highcharts-range-input text` rule in SVG mode, and\n * `input.highcharts-range-selector` when active.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n * @apioption rangeSelector.inputStyle\n */\n inputStyle: {\n /** @ignore */\n color: \"#335cad\" /* Palette.highlightColor80 */,\n /** @ignore */\n cursor: 'pointer'\n },\n /**\n * CSS styles for the labels - the Zoom, From and To texts.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-range-label` class.\n *\n * @sample {highstock} stock/rangeselector/styling/\n * Styling the buttons and inputs\n *\n * @type {Highcharts.CSSObject}\n */\n labelStyle: {\n /** @ignore */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n var RangeSelectorDefaults = {\n lang: lang,\n rangeSelector: rangeSelector\n };\n\n return RangeSelectorDefaults;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelectorComposition.js', [_modules['Core/Defaults.js'], _modules['Stock/RangeSelector/RangeSelectorDefaults.js'], _modules['Core/Utilities.js']], function (D, RangeSelectorDefaults, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n setOptions = D.setOptions;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var chartDestroyEvents = [];\n var composedMembers = [];\n /* *\n *\n * Variables\n *\n * */\n var RangeSelectorConstructor;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the axis min value based on the range option and the current max. For\n * stock charts this is extended via the {@link RangeSelector} so that if the\n * selected range is a multiple of months or years, it is compensated for\n * various month lengths.\n *\n * @private\n * @function Highcharts.Axis#minFromRange\n * @return {number|undefined}\n * The new minimum value.\n */\n function axisMinFromRange() {\n var rangeOptions = this.range,\n type = rangeOptions.type,\n max = this.max,\n time = this.chart.time, \n // Get the true range from a start date\n getTrueRange = function (base,\n count) {\n var timeName = type === 'year' ?\n 'FullYear' : 'Month';\n var date = new time.Date(base);\n var basePeriod = time.get(timeName,\n date);\n time.set(timeName, date, basePeriod + count);\n if (basePeriod === time.get(timeName, date)) {\n time.set('Date', date, 0); // #6537\n }\n return date.getTime() - base;\n };\n var min,\n range;\n if (isNumber(rangeOptions)) {\n min = max - rangeOptions;\n range = rangeOptions;\n }\n else if (rangeOptions) {\n min = max + getTrueRange(max, -(rangeOptions.count || 1));\n // Let the fixedRange reflect initial settings (#5930)\n if (this.chart) {\n this.chart.fixedRange = max - min;\n }\n }\n var dataMin = pick(this.dataMin,\n Number.MIN_VALUE);\n if (!isNumber(min)) {\n min = dataMin;\n }\n if (min <= dataMin) {\n min = dataMin;\n if (typeof range === 'undefined') { // #4501\n range = getTrueRange(min, rangeOptions.count);\n }\n this.newMax = Math.min(min + range, pick(this.dataMax, Number.MAX_VALUE));\n }\n if (!isNumber(max)) {\n min = void 0;\n }\n else if (!isNumber(rangeOptions) &&\n rangeOptions &&\n rangeOptions._offsetMin) {\n min += rangeOptions._offsetMin;\n }\n return min;\n }\n /**\n * @private\n */\n function compose(AxisClass, ChartClass, RangeSelectorClass) {\n RangeSelectorConstructor = RangeSelectorClass;\n if (composedMembers.indexOf(AxisClass) === -1) {\n composedMembers.push(AxisClass);\n AxisClass.prototype.minFromRange = axisMinFromRange;\n }\n if (composedMembers.indexOf(ChartClass) === -1) {\n composedMembers.push(ChartClass);\n addEvent(ChartClass, 'afterGetContainer', onChartAfterGetContainer);\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n addEvent(ChartClass, 'destroy', onChartDestroy);\n addEvent(ChartClass, 'getMargins', onChartGetMargins);\n addEvent(ChartClass, 'render', onChartRender);\n addEvent(ChartClass, 'update', onChartUpdate);\n var chartProto = ChartClass.prototype;\n chartProto.callbacks.push(onChartCallback);\n }\n if (composedMembers.indexOf(setOptions) === -1) {\n extend(defaultOptions, { rangeSelector: RangeSelectorDefaults.rangeSelector });\n extend(defaultOptions.lang, RangeSelectorDefaults.lang);\n }\n }\n /**\n * Initialize rangeselector for stock charts\n * @private\n */\n function onChartAfterGetContainer() {\n if (this.options.rangeSelector &&\n this.options.rangeSelector.enabled) {\n this.rangeSelector = new RangeSelectorConstructor(this);\n }\n }\n /**\n * @private\n */\n function onChartBeforeRender() {\n var chart = this,\n axes = chart.axes,\n rangeSelector = chart.rangeSelector;\n if (rangeSelector) {\n if (isNumber(rangeSelector.deferredYTDClick)) {\n rangeSelector.clickButton(rangeSelector.deferredYTDClick);\n delete rangeSelector.deferredYTDClick;\n }\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getAxisMargins();\n rangeSelector.render();\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n }\n }\n /**\n * @private\n */\n function onChartCallback(chart) {\n var extremes,\n legend,\n alignTo,\n verticalAlign;\n var rangeSelector = chart.rangeSelector,\n redraw = function () {\n if (rangeSelector) {\n extremes = chart.xAxis[0].getExtremes();\n legend = chart.legend;\n verticalAlign = (rangeSelector &&\n rangeSelector.options.verticalAlign);\n if (isNumber(extremes.min)) {\n rangeSelector.render(extremes.min, extremes.max);\n }\n // Re-align the legend so that it's below the rangeselector\n if (legend.display &&\n verticalAlign === 'top' &&\n verticalAlign === legend.options.verticalAlign) {\n // Create a new alignment box for the legend.\n alignTo = merge(chart.spacingBox);\n if (legend.options.layout === 'vertical') {\n alignTo.y = chart.plotTop;\n }\n else {\n alignTo.y += rangeSelector.getHeight();\n }\n legend.group.placed = false; // Don't animate the alignment.\n legend.align(alignTo);\n }\n }\n };\n if (rangeSelector) {\n var events = find(chartDestroyEvents,\n function (e) { return e[0] === chart; });\n if (!events) {\n chartDestroyEvents.push([chart, [\n // redraw the scroller on setExtremes\n addEvent(chart.xAxis[0], 'afterSetExtremes', function (e) {\n if (rangeSelector) {\n rangeSelector.render(e.min, e.max);\n }\n }),\n // redraw the scroller chart resize\n addEvent(chart, 'redraw', redraw)\n ]]);\n }\n // do it now\n redraw();\n }\n }\n /**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\n function onChartDestroy() {\n for (var i = 0, iEnd = chartDestroyEvents.length; i < iEnd; ++i) {\n var events = chartDestroyEvents[i];\n if (events[0] === this) {\n events[1].forEach(function (unbind) { return unbind(); });\n chartDestroyEvents.splice(i, 1);\n return;\n }\n }\n }\n function onChartGetMargins() {\n var rangeSelector = this.rangeSelector;\n if (rangeSelector) {\n var rangeSelectorHeight = rangeSelector.getHeight();\n if (this.extraTopMargin) {\n this.plotTop += rangeSelectorHeight;\n }\n if (this.extraBottomMargin) {\n this.marginBottom += rangeSelectorHeight;\n }\n }\n }\n /**\n * @private\n */\n function onChartRender() {\n var chart = this,\n rangeSelector = chart.rangeSelector;\n if (rangeSelector && !rangeSelector.options.floating) {\n rangeSelector.render();\n var verticalAlign = rangeSelector.options.verticalAlign;\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n }\n /**\n * @private\n */\n function onChartUpdate(e) {\n var chart = this,\n options = e.options,\n optionsRangeSelector = options.rangeSelector,\n extraBottomMarginWas = this.extraBottomMargin,\n extraTopMarginWas = this.extraTopMargin;\n var rangeSelector = chart.rangeSelector;\n if (optionsRangeSelector &&\n optionsRangeSelector.enabled &&\n !defined(rangeSelector) &&\n this.options.rangeSelector) {\n this.options.rangeSelector.enabled = true;\n this.rangeSelector = rangeSelector = new RangeSelectorConstructor(this);\n }\n this.extraBottomMargin = false;\n this.extraTopMargin = false;\n if (rangeSelector) {\n onChartCallback(this);\n var verticalAlign = (optionsRangeSelector &&\n optionsRangeSelector.verticalAlign) || (rangeSelector.options && rangeSelector.options.verticalAlign);\n if (!rangeSelector.options.floating) {\n if (verticalAlign === 'bottom') {\n this.extraBottomMargin = true;\n }\n else if (verticalAlign !== 'middle') {\n this.extraTopMargin = true;\n }\n }\n if (this.extraBottomMargin !== extraBottomMarginWas ||\n this.extraTopMargin !== extraTopMarginWas) {\n this.isDirtyBox = true;\n }\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var RangeSelectorComposition = {\n compose: compose\n };\n\n return RangeSelectorComposition;\n });\n _registerModule(_modules, 'Stock/RangeSelector/RangeSelector.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Stock/RangeSelector/RangeSelectorComposition.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (Axis, D, H, RangeSelectorComposition, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n pInt = U.pInt,\n splat = U.splat;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the preferred input type based on a date format string.\n *\n * @private\n * @function preferredInputType\n */\n function preferredInputType(format) {\n var ms = format.indexOf('%L') !== -1;\n if (ms) {\n return 'text';\n }\n var date = ['a', 'A', 'd', 'e', 'w', 'b', 'B', 'm', 'o', 'y', 'Y']\n .some(function (char) { return format.indexOf('%' + char) !== -1; });\n var time = ['H', 'k', 'I', 'l', 'M', 'S']\n .some(function (char) { return format.indexOf('%' + char) !== -1; });\n if (date && time) {\n return 'datetime-local';\n }\n if (date) {\n return 'date';\n }\n if (time) {\n return 'time';\n }\n return 'text';\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The range selector.\n *\n * @private\n * @class\n * @name Highcharts.RangeSelector\n * @param {Highcharts.Chart} chart\n */\n var RangeSelector = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function RangeSelector(chart) {\n /* *\n *\n * Properties\n *\n * */\n this.buttons = void 0;\n this.buttonOptions = RangeSelector.prototype.defaultButtons;\n this.initialButtonGroupWidth = 0;\n this.options = void 0;\n this.chart = chart;\n this.init(chart);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * @private\n */\n RangeSelector.compose = function (AxisClass, ChartClass) {\n RangeSelectorComposition.compose(AxisClass, ChartClass, RangeSelector);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * The method to run when one of the buttons in the range selectors is\n * clicked\n *\n * @private\n * @function Highcharts.RangeSelector#clickButton\n * @param {number} i\n * The index of the button\n * @param {boolean} [redraw]\n */\n RangeSelector.prototype.clickButton = function (i, redraw) {\n var rangeSelector = this,\n chart = rangeSelector.chart,\n rangeOptions = rangeSelector.buttonOptions[i],\n baseAxis = chart.xAxis[0],\n unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},\n type = rangeOptions.type,\n dataGrouping = rangeOptions.dataGrouping;\n var dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n newMin,\n newMax = baseAxis && Math.round(Math.min(baseAxis.max,\n pick(dataMax,\n baseAxis.max))), // #1568\n baseXAxisOptions,\n range = rangeOptions._range,\n rangeMin,\n minSetting,\n rangeSetting,\n ctx,\n ytdExtremes,\n addOffsetMin = true;\n // chart has no data, base series is removed\n if (dataMin === null || dataMax === null) {\n return;\n }\n // Set the fixed range before range is altered\n chart.fixedRange = range;\n rangeSelector.setSelected(i);\n // Apply dataGrouping associated to button\n if (dataGrouping) {\n this.forcedDataGrouping = true;\n Axis.prototype.setDataGrouping.call(baseAxis || { chart: this.chart }, dataGrouping, false);\n this.frozenStates = rangeOptions.preserveDataGrouping;\n }\n // Apply range\n if (type === 'month' || type === 'year') {\n if (!baseAxis) {\n // This is set to the user options and picked up later when the\n // axis is instantiated so that we know the min and max.\n range = rangeOptions;\n }\n else {\n ctx = {\n range: rangeOptions,\n max: newMax,\n chart: chart,\n dataMin: dataMin,\n dataMax: dataMax\n };\n newMin = baseAxis.minFromRange.call(ctx);\n if (isNumber(ctx.newMax)) {\n newMax = ctx.newMax;\n }\n // #15799: offsetMin is added in minFromRange so that it works\n // with pre-selected buttons as well\n addOffsetMin = false;\n }\n // Fixed times like minutes, hours, days\n }\n else if (range) {\n newMin = Math.max(newMax - range, dataMin);\n newMax = Math.min(newMin + range, dataMax);\n addOffsetMin = false;\n }\n else if (type === 'ytd') {\n // On user clicks on the buttons, or a delayed action running from\n // the beforeRender event (below), the baseAxis is defined.\n if (baseAxis) {\n // When \"ytd\" is the pre-selected button for the initial view,\n // its calculation is delayed and rerun in the beforeRender\n // event (below). When the series are initialized, but before\n // the chart is rendered, we have access to the xData array\n // (#942).\n if (typeof dataMax === 'undefined' ||\n typeof dataMin === 'undefined') {\n dataMin = Number.MAX_VALUE;\n dataMax = Number.MIN_VALUE;\n chart.series.forEach(function (series) {\n // reassign it to the last item\n var xData = series.xData;\n if (xData) {\n dataMin = Math.min(xData[0], dataMin);\n dataMax = Math.max(xData[xData.length - 1], dataMax);\n }\n });\n redraw = false;\n }\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, chart.time.useUTC);\n newMin = rangeMin = ytdExtremes.min;\n newMax = ytdExtremes.max;\n // \"ytd\" is pre-selected. We don't yet have access to processed\n // point and extremes data (things like pointStart and pointInterval\n // are missing), so we delay the process (#942)\n }\n else {\n rangeSelector.deferredYTDClick = i;\n return;\n }\n }\n else if (type === 'all' && baseAxis) {\n // If the navigator exist and the axis range is declared reset that\n // range and from now on only use the range set by a user, #14742.\n if (chart.navigator && chart.navigator.baseSeries[0]) {\n chart.navigator.baseSeries[0].xAxis.options.range = void 0;\n }\n newMin = dataMin;\n newMax = dataMax;\n }\n if (addOffsetMin && rangeOptions._offsetMin && defined(newMin)) {\n newMin += rangeOptions._offsetMin;\n }\n if (rangeOptions._offsetMax && defined(newMax)) {\n newMax += rangeOptions._offsetMax;\n }\n if (this.dropdown) {\n this.dropdown.selectedIndex = i + 1;\n }\n // Update the chart\n if (!baseAxis) {\n // Axis not yet instanciated. Temporarily set min and range\n // options and remove them on chart load (#4317).\n baseXAxisOptions = splat(chart.options.xAxis)[0];\n rangeSetting = baseXAxisOptions.range;\n baseXAxisOptions.range = range;\n minSetting = baseXAxisOptions.min;\n baseXAxisOptions.min = rangeMin;\n addEvent(chart, 'load', function resetMinAndRange() {\n baseXAxisOptions.range = rangeSetting;\n baseXAxisOptions.min = minSetting;\n });\n }\n else {\n // Existing axis object. Set extremes after render time.\n baseAxis.setExtremes(newMin, newMax, pick(redraw, true), void 0, // auto animation\n {\n trigger: 'rangeSelectorButton',\n rangeSelectorButton: rangeOptions\n });\n }\n fireEvent(this, 'afterBtnClick');\n };\n /**\n * Set the selected option. This method only sets the internal flag, it\n * doesn't update the buttons or the actual zoomed range.\n *\n * @private\n * @function Highcharts.RangeSelector#setSelected\n * @param {number} [selected]\n */\n RangeSelector.prototype.setSelected = function (selected) {\n this.selected = this.options.selected = selected;\n };\n /**\n * Initialize the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#init\n * @param {Highcharts.Chart} chart\n */\n RangeSelector.prototype.init = function (chart) {\n var rangeSelector = this,\n options = chart.options.rangeSelector,\n buttonOptions = (options.buttons || rangeSelector.defaultButtons.slice()),\n selectedOption = options.selected,\n blurInputs = function () {\n var minInput = rangeSelector.minInput,\n maxInput = rangeSelector.maxInput;\n // #3274 in some case blur is not defined\n if (minInput && (minInput.blur)) {\n fireEvent(minInput, 'blur');\n }\n if (maxInput && (maxInput.blur)) {\n fireEvent(maxInput, 'blur');\n }\n };\n rangeSelector.chart = chart;\n rangeSelector.options = options;\n rangeSelector.buttons = [];\n rangeSelector.buttonOptions = buttonOptions;\n this.eventsToUnbind = [];\n this.eventsToUnbind.push(addEvent(chart.container, 'mousedown', blurInputs));\n this.eventsToUnbind.push(addEvent(chart, 'resize', blurInputs));\n // Extend the buttonOptions with actual range\n buttonOptions.forEach(rangeSelector.computeButtonRange);\n // zoomed range based on a pre-selected button index\n if (typeof selectedOption !== 'undefined' &&\n buttonOptions[selectedOption]) {\n this.clickButton(selectedOption, false);\n }\n this.eventsToUnbind.push(addEvent(chart, 'load', function () {\n // If a data grouping is applied to the current button, release it\n // when extremes change\n if (chart.xAxis && chart.xAxis[0]) {\n addEvent(chart.xAxis[0], 'setExtremes', function (e) {\n if (this.max - this.min !==\n chart.fixedRange &&\n e.trigger !== 'rangeSelectorButton' &&\n e.trigger !== 'updatedData' &&\n rangeSelector.forcedDataGrouping &&\n !rangeSelector.frozenStates) {\n this.setDataGrouping(false, false);\n }\n });\n }\n }));\n };\n /**\n * Dynamically update the range selector buttons after a new range has been\n * set\n *\n * @private\n * @function Highcharts.RangeSelector#updateButtonStates\n */\n RangeSelector.prototype.updateButtonStates = function () {\n var rangeSelector = this,\n chart = this.chart,\n dropdown = this.dropdown,\n baseAxis = chart.xAxis[0],\n actualRange = Math.round(baseAxis.max - baseAxis.min),\n hasNoData = !baseAxis.hasVisibleSeries,\n day = 24 * 36e5, // A single day in milliseconds\n unionExtremes = (chart.scroller &&\n chart.scroller.getUnionExtremes()) || baseAxis,\n dataMin = unionExtremes.dataMin,\n dataMax = unionExtremes.dataMax,\n ytdExtremes = rangeSelector.getYTDExtremes(dataMax,\n dataMin,\n chart.time.useUTC),\n ytdMin = ytdExtremes.min,\n ytdMax = ytdExtremes.max,\n selected = rangeSelector.selected,\n allButtonsEnabled = rangeSelector.options.allButtonsEnabled,\n buttons = rangeSelector.buttons;\n var selectedExists = isNumber(selected);\n rangeSelector.buttonOptions.forEach(function (rangeOptions, i) {\n var range = rangeOptions._range,\n type = rangeOptions.type,\n count = rangeOptions.count || 1,\n button = buttons[i],\n offsetRange = rangeOptions._offsetMax -\n rangeOptions._offsetMin,\n isSelected = i === selected, \n // Disable buttons where the range exceeds what is allowed in\n // the current view\n isTooGreatRange = range >\n dataMax - dataMin, \n // Disable buttons where the range is smaller than the minimum\n // range\n isTooSmallRange = range < baseAxis.minRange;\n var state = 0, \n // Do not select the YTD button if not explicitly told so\n isYTDButNotSelected = false, \n // Disable the All button if we're already showing all\n isAllButAlreadyShowingAll = false,\n isSameRange = range === actualRange;\n // Months and years have a variable range so we check the extremes\n if ((type === 'month' || type === 'year') &&\n (actualRange + 36e5 >=\n { month: 28, year: 365 }[type] * day * count - offsetRange) &&\n (actualRange - 36e5 <=\n { month: 31, year: 366 }[type] * day * count + offsetRange)) {\n isSameRange = true;\n }\n else if (type === 'ytd') {\n isSameRange = (ytdMax - ytdMin + offsetRange) === actualRange;\n isYTDButNotSelected = !isSelected;\n }\n else if (type === 'all') {\n isSameRange = (baseAxis.max - baseAxis.min >=\n dataMax - dataMin);\n isAllButAlreadyShowingAll = (!isSelected &&\n selectedExists &&\n isSameRange);\n }\n // The new zoom area happens to match the range for a button - mark\n // it selected. This happens when scrolling across an ordinal gap.\n // It can be seen in the intraday demos when selecting 1h and scroll\n // across the night gap.\n var disable = (!allButtonsEnabled &&\n (isTooGreatRange ||\n isTooSmallRange ||\n isAllButAlreadyShowingAll ||\n hasNoData));\n var select = ((isSelected && isSameRange) ||\n (isSameRange && !selectedExists && !isYTDButNotSelected) ||\n (isSelected && rangeSelector.frozenStates));\n if (disable) {\n state = 3;\n }\n else if (select) {\n selectedExists = true; // Only one button can be selected\n state = 2;\n }\n // If state has changed, update the button\n if (button.state !== state) {\n button.setState(state);\n if (dropdown) {\n dropdown.options[i + 1].disabled = disable;\n if (state === 2) {\n dropdown.selectedIndex = i + 1;\n }\n }\n // Reset (#9209)\n if (state === 0 && selected === i) {\n rangeSelector.setSelected();\n }\n }\n });\n };\n /**\n * Compute and cache the range for an individual button\n *\n * @private\n * @function Highcharts.RangeSelector#computeButtonRange\n * @param {Highcharts.RangeSelectorButtonsOptions} rangeOptions\n */\n RangeSelector.prototype.computeButtonRange = function (rangeOptions) {\n var type = rangeOptions.type,\n count = rangeOptions.count || 1, \n // these time intervals have a fixed number of milliseconds, as\n // opposed to month, ytd and year\n fixedTimes = {\n millisecond: 1,\n second: 1000,\n minute: 60 * 1000,\n hour: 3600 * 1000,\n day: 24 * 3600 * 1000,\n week: 7 * 24 * 3600 * 1000\n };\n // Store the range on the button object\n if (fixedTimes[type]) {\n rangeOptions._range = fixedTimes[type] * count;\n }\n else if (type === 'month' || type === 'year') {\n rangeOptions._range = {\n month: 30,\n year: 365\n }[type] * 24 * 36e5 * count;\n }\n rangeOptions._offsetMin = pick(rangeOptions.offsetMin, 0);\n rangeOptions._offsetMax = pick(rangeOptions.offsetMax, 0);\n rangeOptions._range +=\n rangeOptions._offsetMax - rangeOptions._offsetMin;\n };\n /**\n * Get the unix timestamp of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#getInputValue\n */\n RangeSelector.prototype.getInputValue = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n var options = this.chart.options\n .rangeSelector;\n var time = this.chart.time;\n if (input) {\n return ((input.type === 'text' && options.inputDateParser) ||\n this.defaultInputDateParser)(input.value, time.useUTC, time);\n }\n return 0;\n };\n /**\n * Set the internal and displayed value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputValue\n */\n RangeSelector.prototype.setInputValue = function (name, inputTime) {\n var options = this.options, time = this.chart.time, input = name === 'min' ? this.minInput : this.maxInput, dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n if (input) {\n var hcTimeAttr = input.getAttribute('data-hc-time');\n var updatedTime = defined(hcTimeAttr) ? Number(hcTimeAttr) : void 0;\n if (defined(inputTime)) {\n var previousTime = updatedTime;\n if (defined(previousTime)) {\n input.setAttribute('data-hc-time-previous', previousTime);\n }\n input.setAttribute('data-hc-time', inputTime);\n updatedTime = inputTime;\n }\n input.value = time.dateFormat((this.inputTypeFormats[input.type] ||\n options.inputEditDateFormat), updatedTime);\n if (dateBox) {\n dateBox.attr({\n text: time.dateFormat(options.inputDateFormat, updatedTime)\n });\n }\n }\n };\n /**\n * Set the min and max value of a HTML input for the dates\n *\n * @private\n * @function Highcharts.RangeSelector#setInputExtremes\n */\n RangeSelector.prototype.setInputExtremes = function (name, min, max) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n var format = this.inputTypeFormats[input.type];\n var time = this.chart.time;\n if (format) {\n var newMin = time.dateFormat(format,\n min);\n if (input.min !== newMin) {\n input.min = newMin;\n }\n var newMax = time.dateFormat(format,\n max);\n if (input.max !== newMax) {\n input.max = newMax;\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#showInput\n * @param {string} name\n */\n RangeSelector.prototype.showInput = function (name) {\n var dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input && dateBox && this.inputGroup) {\n var isTextInput = input.type === 'text';\n var _a = this.inputGroup,\n translateX = _a.translateX,\n translateY = _a.translateY;\n var inputBoxWidth = this.options.inputBoxWidth;\n css(input, {\n width: isTextInput ?\n ((dateBox.width + (inputBoxWidth ? -2 : 20)) + 'px') :\n 'auto',\n height: isTextInput ? ((dateBox.height - 2) + 'px') : 'auto',\n border: '2px solid silver'\n });\n if (isTextInput && inputBoxWidth) {\n css(input, {\n left: (translateX + dateBox.x) + 'px',\n top: translateY + 'px'\n });\n // Inputs of types date, time or datetime-local should be centered\n // on top of the dateBox\n }\n else {\n css(input, {\n left: Math.min(Math.round(dateBox.x +\n translateX -\n (input.offsetWidth - dateBox.width) / 2), this.chart.chartWidth - input.offsetWidth) + 'px',\n top: (translateY - (input.offsetHeight - dateBox.height) / 2) + 'px'\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideInput\n * @param {string} name\n */\n RangeSelector.prototype.hideInput = function (name) {\n var input = name === 'min' ? this.minInput : this.maxInput;\n if (input) {\n css(input, {\n top: '-9999em',\n border: 0,\n width: '1px',\n height: '1px'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#defaultInputDateParser\n */\n RangeSelector.prototype.defaultInputDateParser = function (inputDate, useUTC, time) {\n var hasTimezone = function (str) {\n return str.length > 6 &&\n (str.lastIndexOf('-') === str.length - 6 ||\n str.lastIndexOf('+') === str.length - 6);\n };\n var input = inputDate.split('/').join('-').split(' ').join('T');\n if (input.indexOf('T') === -1) {\n input += 'T00:00';\n }\n if (useUTC) {\n input += 'Z';\n }\n else if (H.isSafari && !hasTimezone(input)) {\n var offset = new Date(input).getTimezoneOffset() / 60;\n input += offset <= 0 ? \"+\".concat(pad(-offset), \":00\") : \"-\".concat(pad(offset), \":00\");\n }\n var date = Date.parse(input);\n // If the value isn't parsed directly to a value by the\n // browser's Date.parse method, like YYYY-MM-DD in IE8, try\n // parsing it a different way\n if (!isNumber(date)) {\n var parts = inputDate.split('-');\n date = Date.UTC(pInt(parts[0]), pInt(parts[1]) - 1, pInt(parts[2]));\n }\n if (time && useUTC && isNumber(date)) {\n date += time.getTimezoneOffset(date);\n }\n return date;\n };\n /**\n * Draw either the 'from' or the 'to' HTML input box of the range selector\n *\n * @private\n * @function Highcharts.RangeSelector#drawInput\n */\n RangeSelector.prototype.drawInput = function (name) {\n var _a = this,\n chart = _a.chart,\n div = _a.div,\n inputGroup = _a.inputGroup;\n var rangeSelector = this,\n chartStyle = chart.renderer.style || {},\n renderer = chart.renderer,\n options = chart.options.rangeSelector,\n lang = defaultOptions.lang,\n isMin = name === 'min';\n /**\n * @private\n */\n function updateExtremes() {\n var maxInput = rangeSelector.maxInput,\n minInput = rangeSelector.minInput,\n chartAxis = chart.xAxis[0],\n dataAxis = chart.scroller && chart.scroller.xAxis ?\n chart.scroller.xAxis :\n chartAxis,\n dataMin = dataAxis.dataMin,\n dataMax = dataAxis.dataMax;\n var value = rangeSelector.getInputValue(name);\n if (value !== Number(input.getAttribute('data-hc-time-previous')) &&\n isNumber(value)) {\n input.setAttribute('data-hc-time-previous', value);\n // Validate the extremes. If it goes beyound the data min or\n // max, use the actual data extreme (#2438).\n if (isMin && maxInput && isNumber(dataMin)) {\n if (value > Number(maxInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value < dataMin) {\n value = dataMin;\n }\n }\n else if (minInput && isNumber(dataMax)) {\n if (value < Number(minInput.getAttribute('data-hc-time'))) {\n value = void 0;\n }\n else if (value > dataMax) {\n value = dataMax;\n }\n }\n // Set the extremes\n if (typeof value !== 'undefined') { // @todo typof undefined\n chartAxis.setExtremes(isMin ? value : chartAxis.min, isMin ? chartAxis.max : value, void 0, void 0, { trigger: 'rangeSelectorInput' });\n }\n }\n }\n // Create the text label\n var text = lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'] || '';\n var label = renderer\n .label(text, 0)\n .addClass('highcharts-range-label')\n .attr({\n padding: text ? 2 : 0,\n height: text ? options.inputBoxHeight : 0\n })\n .add(inputGroup);\n // Create an SVG label that shows updated date ranges and and records\n // click events that bring in the HTML input.\n var dateBox = renderer\n .label('', 0)\n .addClass('highcharts-range-input')\n .attr({\n padding: 2,\n width: options.inputBoxWidth,\n height: options.inputBoxHeight,\n 'text-align': 'center'\n })\n .on('click',\n function () {\n // If it is already focused, the onfocus event doesn't fire\n // (#3713)\n rangeSelector.showInput(name);\n rangeSelector[name + 'Input'].focus();\n });\n if (!chart.styledMode) {\n dateBox.attr({\n stroke: options.inputBoxBorderColor,\n 'stroke-width': 1\n });\n }\n dateBox.add(inputGroup);\n // Create the HTML input element. This is rendered as 1x1 pixel then set\n // to the right size when focused.\n var input = createElement('input', {\n name: name,\n className: 'highcharts-range-selector'\n },\n void 0,\n div);\n // #14788: Setting input.type to an unsupported type throws in IE, so\n // we need to use setAttribute instead\n input.setAttribute('type', preferredInputType(options.inputDateFormat || '%b %e, %Y'));\n if (!chart.styledMode) {\n // Styles\n label.css(merge(chartStyle, options.labelStyle));\n dateBox.css(merge({\n color: \"#333333\" /* Palette.neutralColor80 */\n }, chartStyle, options.inputStyle));\n css(input, extend({\n position: 'absolute',\n border: 0,\n boxShadow: '0 0 15px rgba(0,0,0,0.3)',\n width: '1px',\n height: '1px',\n padding: 0,\n textAlign: 'center',\n fontSize: chartStyle.fontSize,\n fontFamily: chartStyle.fontFamily,\n top: '-9999em' // #4798\n }, options.inputStyle));\n }\n // Blow up the input box\n input.onfocus = function () {\n rangeSelector.showInput(name);\n };\n // Hide away the input box\n input.onblur = function () {\n // update extermes only when inputs are active\n if (input === H.doc.activeElement) { // Only when focused\n // Update also when no `change` event is triggered, like when\n // clicking inside the SVG (#4710)\n updateExtremes();\n }\n // #10404 - move hide and blur outside focus\n rangeSelector.hideInput(name);\n rangeSelector.setInputValue(name);\n input.blur(); // #4606\n };\n var keyDown = false;\n // handle changes in the input boxes\n input.onchange = function () {\n // Update extremes and blur input when clicking date input calendar\n if (!keyDown) {\n updateExtremes();\n rangeSelector.hideInput(name);\n input.blur();\n }\n };\n input.onkeypress = function (event) {\n // IE does not fire onchange on enter\n if (event.keyCode === 13) {\n updateExtremes();\n }\n };\n input.onkeydown = function (event) {\n keyDown = true;\n // Arrow keys\n if (event.keyCode === 38 || event.keyCode === 40) {\n updateExtremes();\n }\n };\n input.onkeyup = function () {\n keyDown = false;\n };\n return { dateBox: dateBox, input: input, label: label };\n };\n /**\n * Get the position of the range selector buttons and inputs. This can be\n * overridden from outside for custom positioning.\n *\n * @private\n * @function Highcharts.RangeSelector#getPosition\n */\n RangeSelector.prototype.getPosition = function () {\n var chart = this.chart,\n options = chart.options.rangeSelector,\n top = options.verticalAlign === 'top' ?\n chart.plotTop - chart.axisOffset[0] :\n 0; // set offset only for varticalAlign top\n return {\n buttonTop: top + options.buttonPosition.y,\n inputTop: top + options.inputPosition.y - 10\n };\n };\n /**\n * Get the extremes of YTD. Will choose dataMax if its value is lower than\n * the current timestamp. Will choose dataMin if its value is higher than\n * the timestamp for the start of current year.\n *\n * @private\n * @function Highcharts.RangeSelector#getYTDExtremes\n * @return {*}\n * Returns min and max for the YTD\n */\n RangeSelector.prototype.getYTDExtremes = function (dataMax, dataMin, useUTC) {\n var time = this.chart.time,\n now = new time.Date(dataMax),\n year = time.get('FullYear',\n now),\n startOfYear = useUTC ?\n time.Date.UTC(year, 0, 1) : // eslint-disable-line new-cap\n +new time.Date(year, 0, 1),\n min = Math.max(dataMin,\n startOfYear),\n ts = now.getTime();\n return {\n max: Math.min(dataMax || ts, ts),\n min: min\n };\n };\n /**\n * Render the range selector including the buttons and the inputs. The first\n * time render is called, the elements are created and positioned. On\n * subsequent calls, they are moved and updated.\n *\n * @private\n * @function Highcharts.RangeSelector#render\n * @param {number} [min]\n * X axis minimum\n * @param {number} [max]\n * X axis maximum\n */\n RangeSelector.prototype.render = function (min, max) {\n var chart = this.chart,\n renderer = chart.renderer,\n container = chart.container,\n chartOptions = chart.options,\n options = chartOptions.rangeSelector, \n // Place inputs above the container\n inputsZIndex = pick(chartOptions.chart.style &&\n chartOptions.chart.style.zIndex, 0) + 1,\n inputEnabled = options.inputEnabled,\n rendered = this.rendered;\n if (options.enabled === false) {\n return;\n }\n // create the elements\n if (!rendered) {\n this.group = renderer.g('range-selector-group')\n .attr({\n zIndex: 7\n })\n .add();\n this.div = createElement('div', void 0, {\n position: 'relative',\n height: 0,\n zIndex: inputsZIndex\n });\n if (this.buttonOptions.length) {\n this.renderButtons();\n }\n // First create a wrapper outside the container in order to make\n // the inputs work and make export correct\n if (container.parentNode) {\n container.parentNode.insertBefore(this.div, container);\n }\n if (inputEnabled) {\n // Create the group to keep the inputs\n this.inputGroup = renderer.g('input-group').add(this.group);\n var minElems = this.drawInput('min');\n this.minDateBox = minElems.dateBox;\n this.minLabel = minElems.label;\n this.minInput = minElems.input;\n var maxElems = this.drawInput('max');\n this.maxDateBox = maxElems.dateBox;\n this.maxLabel = maxElems.label;\n this.maxInput = maxElems.input;\n }\n }\n if (inputEnabled) {\n // Set or reset the input values\n this.setInputValue('min', min);\n this.setInputValue('max', max);\n var unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || chart.xAxis[0] || {};\n if (defined(unionExtremes.dataMin) &&\n defined(unionExtremes.dataMax)) {\n var minRange = chart.xAxis[0].minRange || 0;\n this.setInputExtremes('min', unionExtremes.dataMin, Math.min(unionExtremes.dataMax, this.getInputValue('max')) - minRange);\n this.setInputExtremes('max', Math.max(unionExtremes.dataMin, this.getInputValue('min')) + minRange, unionExtremes.dataMax);\n }\n // Reflow\n if (this.inputGroup) {\n var x_1 = 0;\n [\n this.minLabel,\n this.minDateBox,\n this.maxLabel,\n this.maxDateBox\n ].forEach(function (label) {\n if (label) {\n var width = label.getBBox().width;\n if (width) {\n label.attr({ x: x_1 });\n x_1 += width + options.inputSpacing;\n }\n }\n });\n }\n }\n this.alignElements();\n this.rendered = true;\n };\n /**\n * Render the range buttons. This only runs the first time, later the\n * positioning is laid out in alignElements.\n *\n * @private\n * @function Highcharts.RangeSelector#renderButtons\n */\n RangeSelector.prototype.renderButtons = function () {\n var _this = this;\n var _a = this,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options;\n var lang = defaultOptions.lang;\n var renderer = chart.renderer;\n var buttonTheme = merge(options.buttonTheme);\n var states = buttonTheme && buttonTheme.states;\n // Prevent the button from resetting the width when the button state\n // changes since we need more control over the width when collapsing\n // the buttons\n var width = buttonTheme.width || 28;\n delete buttonTheme.width;\n delete buttonTheme.states;\n this.buttonGroup = renderer.g('range-selector-buttons').add(this.group);\n var dropdown = this.dropdown = createElement('select',\n void 0, {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n border: 0,\n top: '-9999em',\n cursor: 'pointer',\n opacity: 0.0001\n },\n this.div);\n // Prevent page zoom on iPhone\n addEvent(dropdown, 'touchstart', function () {\n dropdown.style.fontSize = '16px';\n });\n // Forward events from select to button\n [\n [H.isMS ? 'mouseover' : 'mouseenter'],\n [H.isMS ? 'mouseout' : 'mouseleave'],\n ['change', 'click']\n ].forEach(function (_a) {\n var from = _a[0],\n to = _a[1];\n addEvent(dropdown, from, function () {\n var button = buttons[_this.currentButtonIndex()];\n if (button) {\n fireEvent(button.element, to || from);\n }\n });\n });\n this.zoomText = renderer\n .label((lang && lang.rangeSelectorZoom) || '', 0)\n .attr({\n padding: options.buttonTheme.padding,\n height: options.buttonTheme.height,\n paddingLeft: 0,\n paddingRight: 0\n })\n .add(this.buttonGroup);\n if (!this.chart.styledMode) {\n this.zoomText.css(options.labelStyle);\n buttonTheme['stroke-width'] = pick(buttonTheme['stroke-width'], 0);\n }\n createElement('option', {\n textContent: this.zoomText.textStr,\n disabled: true\n }, void 0, dropdown);\n this.buttonOptions.forEach(function (rangeOptions, i) {\n createElement('option', {\n textContent: rangeOptions.title || rangeOptions.text\n }, void 0, dropdown);\n buttons[i] = renderer\n .button(rangeOptions.text, 0, 0, function (e) {\n // extract events from button object and call\n var buttonEvents = (rangeOptions.events && rangeOptions.events.click);\n var callDefaultEvent;\n if (buttonEvents) {\n callDefaultEvent =\n buttonEvents.call(rangeOptions, e);\n }\n if (callDefaultEvent !== false) {\n _this.clickButton(i);\n }\n _this.isActive = true;\n }, buttonTheme, states && states.hover, states && states.select, states && states.disabled)\n .attr({\n 'text-align': 'center',\n width: width\n })\n .add(_this.buttonGroup);\n if (rangeOptions.title) {\n buttons[i].attr('title', rangeOptions.title);\n }\n });\n };\n /**\n * Align the elements horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignElements\n */\n RangeSelector.prototype.alignElements = function () {\n var _this = this;\n var _a = this,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons,\n chart = _a.chart,\n group = _a.group,\n inputGroup = _a.inputGroup,\n options = _a.options,\n zoomText = _a.zoomText;\n var chartOptions = chart.options;\n var navButtonOptions = (chartOptions.exporting &&\n chartOptions.exporting.enabled !== false &&\n chartOptions.navigation &&\n chartOptions.navigation.buttonOptions);\n var buttonPosition = options.buttonPosition,\n inputPosition = options.inputPosition,\n verticalAlign = options.verticalAlign;\n // Get the X offset required to avoid overlapping with the exporting\n // button. This is is used both by the buttonGroup and the inputGroup.\n var getXOffsetForExportButton = function (group,\n position) {\n if (navButtonOptions &&\n _this.titleCollision(chart) &&\n verticalAlign === 'top' &&\n position.align === 'right' && ((position.y -\n group.getBBox().height - 12) <\n ((navButtonOptions.y || 0) +\n (navButtonOptions.height || 0) +\n chart.spacing[0]))) {\n return -40;\n }\n return 0;\n };\n var plotLeft = chart.plotLeft;\n if (group && buttonPosition && inputPosition) {\n var translateX = buttonPosition.x - chart.spacing[3];\n if (buttonGroup) {\n this.positionButtons();\n if (!this.initialButtonGroupWidth) {\n var width_1 = 0;\n if (zoomText) {\n width_1 += zoomText.getBBox().width + 5;\n }\n buttons.forEach(function (button, i) {\n width_1 += button.width;\n if (i !== buttons.length - 1) {\n width_1 += options.buttonSpacing;\n }\n });\n this.initialButtonGroupWidth = width_1;\n }\n plotLeft -= chart.spacing[3];\n this.updateButtonStates();\n // Detect collision between button group and exporting\n var xOffsetForExportButton_1 = getXOffsetForExportButton(buttonGroup,\n buttonPosition);\n this.alignButtonGroup(xOffsetForExportButton_1);\n // Skip animation\n group.placed = buttonGroup.placed = chart.hasLoaded;\n }\n var xOffsetForExportButton = 0;\n if (inputGroup) {\n // Detect collision between the input group and exporting button\n xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition);\n if (inputPosition.align === 'left') {\n translateX = plotLeft;\n }\n else if (inputPosition.align === 'right') {\n translateX = -Math.max(chart.axisOffset[1], -xOffsetForExportButton);\n }\n // Update the alignment to the updated spacing box\n inputGroup.align({\n y: inputPosition.y,\n width: inputGroup.getBBox().width,\n align: inputPosition.align,\n // fix wrong getBBox() value on right align\n x: inputPosition.x + translateX - 2\n }, true, chart.spacingBox);\n // Skip animation\n inputGroup.placed = chart.hasLoaded;\n }\n this.handleCollision(xOffsetForExportButton);\n // Vertical align\n group.align({\n verticalAlign: verticalAlign\n }, true, chart.spacingBox);\n var alignTranslateY = group.alignAttr.translateY;\n // Set position\n var groupHeight = group.getBBox().height + 20; // # 20 padding\n var translateY = 0;\n // Calculate bottom position\n if (verticalAlign === 'bottom') {\n var legendOptions = chart.legend && chart.legend.options;\n var legendHeight = (legendOptions &&\n legendOptions.verticalAlign === 'bottom' &&\n legendOptions.enabled &&\n !legendOptions.floating ?\n (chart.legend.legendHeight +\n pick(legendOptions.margin, 10)) :\n 0);\n groupHeight = groupHeight + legendHeight - 20;\n translateY = (alignTranslateY -\n groupHeight -\n (options.floating ? 0 : options.y) -\n (chart.titleOffset ? chart.titleOffset[2] : 0) -\n 10 // 10 spacing\n );\n }\n if (verticalAlign === 'top') {\n if (options.floating) {\n translateY = 0;\n }\n if (chart.titleOffset && chart.titleOffset[0]) {\n translateY = chart.titleOffset[0];\n }\n translateY += ((chart.margin[0] - chart.spacing[0]) || 0);\n }\n else if (verticalAlign === 'middle') {\n if (inputPosition.y === buttonPosition.y) {\n translateY = alignTranslateY;\n }\n else if (inputPosition.y || buttonPosition.y) {\n if (inputPosition.y < 0 ||\n buttonPosition.y < 0) {\n translateY -= Math.min(inputPosition.y, buttonPosition.y);\n }\n else {\n translateY = alignTranslateY - groupHeight;\n }\n }\n }\n group.translate(options.x, options.y + Math.floor(translateY));\n // Translate HTML inputs\n var _b = this,\n minInput = _b.minInput,\n maxInput = _b.maxInput,\n dropdown = _b.dropdown;\n if (options.inputEnabled && minInput && maxInput) {\n minInput.style.marginTop = group.translateY + 'px';\n maxInput.style.marginTop = group.translateY + 'px';\n }\n if (dropdown) {\n dropdown.style.marginTop = group.translateY + 'px';\n }\n }\n };\n /**\n * Align the button group horizontally and vertically.\n *\n * @private\n * @function Highcharts.RangeSelector#alignButtonGroup\n * @param {number} xOffsetForExportButton\n * @param {number} [width]\n */\n RangeSelector.prototype.alignButtonGroup = function (xOffsetForExportButton, width) {\n var _a = this,\n chart = _a.chart,\n options = _a.options,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons;\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft - chart.spacing[3];\n var translateX = buttonPosition.x - chart.spacing[3];\n if (buttonPosition.align === 'right') {\n translateX += xOffsetForExportButton - plotLeft; // #13014\n }\n else if (buttonPosition.align === 'center') {\n translateX -= plotLeft / 2;\n }\n if (buttonGroup) {\n // Align button group\n buttonGroup.align({\n y: buttonPosition.y,\n width: pick(width, this.initialButtonGroupWidth),\n align: buttonPosition.align,\n x: translateX\n }, true, chart.spacingBox);\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#positionButtons\n */\n RangeSelector.prototype.positionButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n chart = _a.chart,\n options = _a.options,\n zoomText = _a.zoomText;\n var verb = chart.hasLoaded ? 'animate' : 'attr';\n var buttonPosition = options.buttonPosition;\n var plotLeft = chart.plotLeft;\n var buttonLeft = plotLeft;\n if (zoomText && zoomText.visibility !== 'hidden') {\n // #8769, allow dynamically updating margins\n zoomText[verb]({\n x: pick(plotLeft + buttonPosition.x, plotLeft)\n });\n // Button start position\n buttonLeft += buttonPosition.x +\n zoomText.getBBox().width + 5;\n }\n for (var i = 0, iEnd = this.buttonOptions.length; i < iEnd; ++i) {\n if (buttons[i].visibility !== 'hidden') {\n buttons[i][verb]({ x: buttonLeft });\n // increase button position for the next button\n buttonLeft += buttons[i].width + options.buttonSpacing;\n }\n else {\n buttons[i][verb]({ x: plotLeft });\n }\n }\n };\n /**\n * Handle collision between the button group and the input group\n *\n * @private\n * @function Highcharts.RangeSelector#handleCollision\n *\n * @param {number} xOffsetForExportButton\n * The X offset of the group required to make room for the\n * exporting button\n */\n RangeSelector.prototype.handleCollision = function (xOffsetForExportButton) {\n var _this = this;\n var _a = this,\n chart = _a.chart,\n buttonGroup = _a.buttonGroup,\n inputGroup = _a.inputGroup;\n var _b = this.options,\n buttonPosition = _b.buttonPosition,\n dropdown = _b.dropdown,\n inputPosition = _b.inputPosition;\n var maxButtonWidth = function () {\n var buttonWidth = 0;\n _this.buttons.forEach(function (button) {\n var bBox = button.getBBox();\n if (bBox.width > buttonWidth) {\n buttonWidth = bBox.width;\n }\n });\n return buttonWidth;\n };\n var groupsOverlap = function (buttonGroupWidth) {\n if (inputGroup && buttonGroup) {\n var inputGroupX = (inputGroup.alignAttr.translateX +\n inputGroup.alignOptions.x -\n xOffsetForExportButton +\n // getBBox for detecing left margin\n inputGroup.getBBox().x +\n // 2px padding to not overlap input and label\n 2);\n var inputGroupWidth = inputGroup.alignOptions.width;\n var buttonGroupX = buttonGroup.alignAttr.translateX +\n buttonGroup.getBBox().x;\n return (buttonGroupX + buttonGroupWidth > inputGroupX) &&\n (inputGroupX + inputGroupWidth > buttonGroupX) &&\n (buttonPosition.y <\n (inputPosition.y +\n inputGroup.getBBox().height));\n }\n return false;\n };\n var moveInputsDown = function () {\n if (inputGroup && buttonGroup) {\n inputGroup.attr({\n translateX: inputGroup.alignAttr.translateX + (chart.axisOffset[1] >= -xOffsetForExportButton ?\n 0 :\n -xOffsetForExportButton),\n translateY: inputGroup.alignAttr.translateY +\n buttonGroup.getBBox().height + 10\n });\n }\n };\n if (buttonGroup) {\n if (dropdown === 'always') {\n this.collapseButtons(xOffsetForExportButton);\n if (groupsOverlap(maxButtonWidth())) {\n // Move the inputs down if there is still a collision\n // after collapsing the buttons\n moveInputsDown();\n }\n return;\n }\n if (dropdown === 'never') {\n this.expandButtons();\n }\n }\n // Detect collision\n if (inputGroup && buttonGroup) {\n if ((inputPosition.align === buttonPosition.align) ||\n // 20 is minimal spacing between elements\n groupsOverlap(this.initialButtonGroupWidth + 20)) {\n if (dropdown === 'responsive') {\n this.collapseButtons(xOffsetForExportButton);\n if (groupsOverlap(maxButtonWidth())) {\n moveInputsDown();\n }\n }\n else {\n moveInputsDown();\n }\n }\n else if (dropdown === 'responsive') {\n this.expandButtons();\n }\n }\n else if (buttonGroup && dropdown === 'responsive') {\n if (this.initialButtonGroupWidth > chart.plotWidth) {\n this.collapseButtons(xOffsetForExportButton);\n }\n else {\n this.expandButtons();\n }\n }\n };\n /**\n * Collapse the buttons and put the select element on top.\n *\n * @private\n * @function Highcharts.RangeSelector#collapseButtons\n * @param {number} xOffsetForExportButton\n */\n RangeSelector.prototype.collapseButtons = function (xOffsetForExportButton) {\n var _a = this,\n buttons = _a.buttons,\n buttonOptions = _a.buttonOptions,\n chart = _a.chart,\n dropdown = _a.dropdown,\n options = _a.options,\n zoomText = _a.zoomText;\n var userButtonTheme = (chart.userOptions.rangeSelector &&\n chart.userOptions.rangeSelector.buttonTheme) || {};\n var getAttribs = function (text) { return ({\n text: text ? \"\" + text + \" \\u25BE\" : '▾',\n width: 'auto',\n paddingLeft: pick(options.buttonTheme.paddingLeft,\n userButtonTheme.padding, 8),\n paddingRight: pick(options.buttonTheme.paddingRight,\n userButtonTheme.padding, 8)\n }); };\n if (zoomText) {\n zoomText.hide();\n }\n var hasActiveButton = false;\n buttonOptions.forEach(function (rangeOptions, i) {\n var button = buttons[i];\n if (button.state !== 2) {\n button.hide();\n }\n else {\n button.show();\n button.attr(getAttribs(rangeOptions.text));\n hasActiveButton = true;\n }\n });\n if (!hasActiveButton) {\n if (dropdown) {\n dropdown.selectedIndex = 0;\n }\n buttons[0].show();\n buttons[0].attr(getAttribs(this.zoomText && this.zoomText.textStr));\n }\n var align = options.buttonPosition.align;\n this.positionButtons();\n if (align === 'right' || align === 'center') {\n this.alignButtonGroup(xOffsetForExportButton, buttons[this.currentButtonIndex()].getBBox().width);\n }\n this.showDropdown();\n };\n /**\n * Show all the buttons and hide the select element.\n *\n * @private\n * @function Highcharts.RangeSelector#expandButtons\n */\n RangeSelector.prototype.expandButtons = function () {\n var _a = this,\n buttons = _a.buttons,\n buttonOptions = _a.buttonOptions,\n options = _a.options,\n zoomText = _a.zoomText;\n this.hideDropdown();\n if (zoomText) {\n zoomText.show();\n }\n buttonOptions.forEach(function (rangeOptions, i) {\n var button = buttons[i];\n button.show();\n button.attr({\n text: rangeOptions.text,\n width: options.buttonTheme.width || 28,\n paddingLeft: pick(options.buttonTheme.paddingLeft, 'unset'),\n paddingRight: pick(options.buttonTheme.paddingRight, 'unset')\n });\n if (button.state < 2) {\n button.setState(0);\n }\n });\n this.positionButtons();\n };\n /**\n * Get the index of the visible button when the buttons are collapsed.\n *\n * @private\n * @function Highcharts.RangeSelector#currentButtonIndex\n */\n RangeSelector.prototype.currentButtonIndex = function () {\n var dropdown = this.dropdown;\n if (dropdown && dropdown.selectedIndex > 0) {\n return dropdown.selectedIndex - 1;\n }\n return 0;\n };\n /**\n * Position the select element on top of the button.\n *\n * @private\n * @function Highcharts.RangeSelector#showDropdown\n */\n RangeSelector.prototype.showDropdown = function () {\n var _a = this,\n buttonGroup = _a.buttonGroup,\n buttons = _a.buttons,\n chart = _a.chart,\n dropdown = _a.dropdown;\n if (buttonGroup && dropdown) {\n var translateX = buttonGroup.translateX,\n translateY = buttonGroup.translateY;\n var bBox = buttons[this.currentButtonIndex()].getBBox();\n css(dropdown, {\n left: (chart.plotLeft + translateX) + 'px',\n top: (translateY + 0.5) + 'px',\n width: bBox.width + 'px',\n height: bBox.height + 'px'\n });\n this.hasVisibleDropdown = true;\n }\n };\n /**\n * @private\n * @function Highcharts.RangeSelector#hideDropdown\n */\n RangeSelector.prototype.hideDropdown = function () {\n var dropdown = this.dropdown;\n if (dropdown) {\n css(dropdown, {\n top: '-9999em',\n width: '1px',\n height: '1px'\n });\n this.hasVisibleDropdown = false;\n }\n };\n /**\n * Extracts height of range selector\n *\n * @private\n * @function Highcharts.RangeSelector#getHeight\n * @return {number}\n * Returns rangeSelector height\n */\n RangeSelector.prototype.getHeight = function () {\n var rangeSelector = this,\n options = rangeSelector.options,\n rangeSelectorGroup = rangeSelector.group,\n inputPosition = options.inputPosition,\n buttonPosition = options.buttonPosition,\n yPosition = options.y,\n buttonPositionY = buttonPosition.y,\n inputPositionY = inputPosition.y;\n var rangeSelectorHeight = 0;\n if (options.height) {\n return options.height;\n }\n // Align the elements before we read the height in case we're switching\n // between wrapped and non-wrapped layout\n this.alignElements();\n rangeSelectorHeight = rangeSelectorGroup ?\n // 13px to keep back compatibility\n (rangeSelectorGroup.getBBox(true).height) + 13 +\n yPosition :\n 0;\n var minPosition = Math.min(inputPositionY,\n buttonPositionY);\n if ((inputPositionY < 0 && buttonPositionY < 0) ||\n (inputPositionY > 0 && buttonPositionY > 0)) {\n rangeSelectorHeight += Math.abs(minPosition);\n }\n return rangeSelectorHeight;\n };\n /**\n * Detect collision with title or subtitle\n *\n * @private\n * @function Highcharts.RangeSelector#titleCollision\n * @return {boolean}\n * Returns collision status\n */\n RangeSelector.prototype.titleCollision = function (chart) {\n return !(chart.options.title.text ||\n chart.options.subtitle.text);\n };\n /**\n * Update the range selector with new options\n *\n * @private\n * @function Highcharts.RangeSelector#update\n * @param {Highcharts.RangeSelectorOptions} options\n */\n RangeSelector.prototype.update = function (options) {\n var chart = this.chart;\n merge(true, chart.options.rangeSelector, options);\n this.destroy();\n this.init(chart);\n this.render();\n };\n /**\n * Destroys allocated elements.\n *\n * @private\n * @function Highcharts.RangeSelector#destroy\n */\n RangeSelector.prototype.destroy = function () {\n var rSelector = this,\n minInput = rSelector.minInput,\n maxInput = rSelector.maxInput;\n if (rSelector.eventsToUnbind) {\n rSelector.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n rSelector.eventsToUnbind = void 0;\n }\n // Destroy elements in collections\n destroyObjectProperties(rSelector.buttons);\n // Clear input element events\n if (minInput) {\n minInput.onfocus = minInput.onblur = minInput.onchange = null;\n }\n if (maxInput) {\n maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;\n }\n // Destroy HTML and SVG elements\n objectEach(rSelector, function (val, key) {\n if (val && key !== 'chart') {\n if (val instanceof SVGElement) {\n // SVGElement\n val.destroy();\n }\n else if (val instanceof window.HTMLElement) {\n // HTML element\n discardElement(val);\n }\n }\n if (val !== RangeSelector.prototype[key]) {\n rSelector[key] = null;\n }\n }, this);\n };\n return RangeSelector;\n }());\n extend(RangeSelector.prototype, {\n /**\n * The default buttons for pre-selecting time frames.\n * @private\n */\n defaultButtons: [{\n type: 'month',\n count: 1,\n text: '1m',\n title: 'View 1 month'\n }, {\n type: 'month',\n count: 3,\n text: '3m',\n title: 'View 3 months'\n }, {\n type: 'month',\n count: 6,\n text: '6m',\n title: 'View 6 months'\n }, {\n type: 'ytd',\n text: 'YTD',\n title: 'View year to date'\n }, {\n type: 'year',\n count: 1,\n text: '1y',\n title: 'View 1 year'\n }, {\n type: 'all',\n text: 'All',\n title: 'View all'\n }],\n /**\n * The date formats to use when setting min, max and value on date inputs.\n * @private\n */\n inputTypeFormats: {\n 'datetime-local': '%Y-%m-%dT%H:%M:%S',\n 'date': '%Y-%m-%d',\n 'time': '%H:%M:%S'\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Define the time span for the button\n *\n * @typedef {\"all\"|\"day\"|\"hour\"|\"millisecond\"|\"minute\"|\"month\"|\"second\"|\"week\"|\"year\"|\"ytd\"} Highcharts.RangeSelectorButtonTypeValue\n */\n /**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.RangeSelectorClickCallbackFunction\n *\n * @param {global.Event} e\n * Event arguments.\n *\n * @param {boolean|undefined}\n * Return false to cancel the default button event.\n */\n /**\n * Callback function to parse values entered in the input boxes and return a\n * valid JavaScript time as milliseconds since 1970.\n *\n * @callback Highcharts.RangeSelectorParseCallbackFunction\n *\n * @param {string} value\n * Input value to parse.\n *\n * @return {number}\n * Parsed JavaScript time value.\n */\n (''); // keeps doclets above in JS file\n\n return RangeSelector;\n });\n _registerModule(_modules, 'Core/Axis/OrdinalAxis.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (Axis, H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n css = U.css,\n defined = U.defined,\n error = U.error,\n pick = U.pick,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* eslint-disable valid-jsdoc */\n /* *\n *\n * Composition\n *\n * */\n /**\n * Extends the axis with ordinal support.\n * @private\n */\n var OrdinalAxis;\n (function (OrdinalAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends the axis with ordinal support.\n *\n * @private\n *\n * @param AxisClass\n * Axis class to extend.\n *\n * @param ChartClass\n * Chart class to use.\n *\n * @param SeriesClass\n * Series class to use.\n */\n function compose(AxisClass, SeriesClass, ChartClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n axisProto.index2val = index2val;\n axisProto.lin2val = lin2val;\n axisProto.val2lin = val2lin;\n // Record this to prevent overwriting by broken-axis module (#5979)\n axisProto.ordinal2lin = axisProto.val2lin;\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'foundExtremes', onAxisFoundExtremes);\n addEvent(AxisClass, 'afterSetScale', onAxisAfterSetScale);\n addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'pan', onChartPan);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'updatedData', onSeriesUpdatedData);\n }\n /* eslint-enable no-invalid-this */\n return AxisClass;\n }\n OrdinalAxis.compose = compose;\n /**\n * In an ordinal axis, there might be areas with dense consentrations of\n * points, then large gaps between some. Creating equally distributed\n * ticks over this entire range may lead to a huge number of ticks that\n * will later be removed. So instead, break the positions up in\n * segments, find the tick positions for each segment then concatenize\n * them. This method is used from both data grouping logic and X axis\n * tick position logic.\n * @private\n */\n function getTimeTicks(normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {\n if (positions === void 0) { positions = []; }\n if (closestDistance === void 0) { closestDistance = 0; }\n var higherRanks = {},\n tickPixelIntervalOption = this.options.tickPixelInterval,\n time = this.chart.time, \n // Record all the start positions of a segment, to use when\n // deciding what's a gap in the data.\n segmentStarts = [];\n var end,\n segmentPositions,\n hasCrossedHigherRank,\n info,\n outsideMax,\n start = 0,\n groupPositions = [],\n lastGroupPosition = -Number.MAX_VALUE;\n // The positions are not always defined, for example for ordinal\n // positions when data has regular interval (#1557, #2090)\n if ((!this.options.ordinal && !this.options.breaks) ||\n !positions ||\n positions.length < 3 ||\n typeof min === 'undefined') {\n return time.getTimeTicks.apply(time, arguments);\n }\n // Analyze the positions array to split it into segments on gaps\n // larger than 5 times the closest distance. The closest distance is\n // already found at this point, so we reuse that instead of\n // computing it again.\n var posLength = positions.length;\n for (end = 0; end < posLength; end++) {\n outsideMax = end && positions[end - 1] > max;\n if (positions[end] < min) { // Set the last position before min\n start = end;\n }\n if (end === posLength - 1 ||\n positions[end + 1] - positions[end] > closestDistance * 5 ||\n outsideMax) {\n // For each segment, calculate the tick positions from the\n // getTimeTicks utility function. The interval will be the\n // same regardless of how long the segment is.\n if (positions[end] > lastGroupPosition) { // #1475\n segmentPositions = time.getTimeTicks(normalizedInterval, positions[start], positions[end], startOfWeek);\n // Prevent duplicate groups, for example for multiple\n // segments within one larger time frame (#1475)\n while (segmentPositions.length &&\n segmentPositions[0] <= lastGroupPosition) {\n segmentPositions.shift();\n }\n if (segmentPositions.length) {\n lastGroupPosition =\n segmentPositions[segmentPositions.length - 1];\n }\n segmentStarts.push(groupPositions.length);\n groupPositions = groupPositions.concat(segmentPositions);\n }\n // Set start of next segment\n start = end + 1;\n }\n if (outsideMax) {\n break;\n }\n }\n // Get the grouping info from the last of the segments. The info is\n // the same for all segments.\n if (segmentPositions) {\n info = segmentPositions.info;\n // Optionally identify ticks with higher rank, for example\n // when the ticks have crossed midnight.\n if (findHigherRanks && info.unitRange <= timeUnits.hour) {\n end = groupPositions.length - 1;\n // Compare points two by two\n for (start = 1; start < end; start++) {\n if (time.dateFormat('%d', groupPositions[start]) !==\n time.dateFormat('%d', groupPositions[start - 1])) {\n higherRanks[groupPositions[start]] = 'day';\n hasCrossedHigherRank = true;\n }\n }\n // If the complete array has crossed midnight, we want\n // to mark the first positions also as higher rank\n if (hasCrossedHigherRank) {\n higherRanks[groupPositions[0]] = 'day';\n }\n info.higherRanks = higherRanks;\n }\n // Save the info\n info.segmentStarts = segmentStarts;\n groupPositions.info = info;\n }\n else {\n error(12, false, this.chart);\n }\n // Don't show ticks within a gap in the ordinal axis, where the\n // space between two points is greater than a portion of the tick\n // pixel interval\n if (findHigherRanks && defined(tickPixelIntervalOption)) {\n var length_1 = groupPositions.length,\n translatedArr = [],\n distances = [];\n var itemToRemove = void 0,\n translated = void 0,\n lastTranslated = void 0,\n medianDistance = void 0,\n distance = void 0,\n i = length_1;\n // Find median pixel distance in order to keep a reasonably even\n // distance between ticks (#748)\n while (i--) {\n translated = this.translate(groupPositions[i]);\n if (lastTranslated) {\n distances[i] = lastTranslated - translated;\n }\n translatedArr[i] = lastTranslated = translated;\n }\n distances.sort();\n medianDistance = distances[Math.floor(distances.length / 2)];\n if (medianDistance < tickPixelIntervalOption * 0.6) {\n medianDistance = null;\n }\n // Now loop over again and remove ticks where needed\n i = groupPositions[length_1 - 1] > max ? length_1 - 1 : length_1; // #817\n lastTranslated = void 0;\n while (i--) {\n translated = translatedArr[i];\n distance = Math.abs(lastTranslated - translated);\n // #4175 - when axis is reversed, the distance, is negative but\n // tickPixelIntervalOption positive, so we need to compare the\n // same values\n // Remove ticks that are closer than 0.6 times the pixel\n // interval from the one to the right, but not if it is close to\n // the median distance (#748).\n if (lastTranslated &&\n distance < tickPixelIntervalOption * 0.8 &&\n (medianDistance === null || distance < medianDistance * 0.8)) {\n // Is this a higher ranked position with a normal\n // position to the right?\n if (higherRanks[groupPositions[i]] &&\n !higherRanks[groupPositions[i + 1]]) {\n // Yes: remove the lower ranked neighbour to the\n // right\n itemToRemove = i + 1;\n lastTranslated = translated; // #709\n }\n else {\n // No: remove this one\n itemToRemove = i;\n }\n groupPositions.splice(itemToRemove, 1);\n }\n else {\n lastTranslated = translated;\n }\n }\n }\n return groupPositions;\n }\n /**\n * Get axis position of given index of the extended ordinal positions.\n * Used only when panning an ordinal axis.\n *\n * @private\n * @function Highcharts.Axis#index2val\n * @param {number} index\n * The index value of searched point\n */\n function index2val(index) {\n var axis = this,\n ordinal = axis.ordinal, \n // Context could be changed to extendedOrdinalPositions.\n ordinalPositions = ordinal.positions;\n // The visible range contains only equally spaced values.\n if (!ordinalPositions) {\n return index;\n }\n var i = ordinalPositions.length - 1,\n distance;\n if (index < 0) { // out of range, in effect panning to the left\n index = ordinalPositions[0];\n }\n else if (index > i) { // out of range, panning to the right\n index = ordinalPositions[i];\n }\n else { // split it up\n i = Math.floor(index);\n distance = index - i; // the decimal\n }\n if (typeof distance !== 'undefined' &&\n typeof ordinalPositions[i] !== 'undefined') {\n return ordinalPositions[i] + (distance ?\n distance *\n (ordinalPositions[i + 1] - ordinalPositions[i]) :\n 0);\n }\n return index;\n }\n /**\n * Translate from linear (internal) to axis value.\n *\n * @private\n * @function Highcharts.Axis#lin2val\n * @param {number} val\n * The linear abstracted value.\n */\n function lin2val(val) {\n var axis = this,\n ordinal = axis.ordinal,\n localMin = axis.old ? axis.old.min : axis.min,\n localA = axis.old ? axis.old.transA : axis.transA;\n var positions = ordinal.positions; // for the current visible range\n // The visible range contains only equally spaced values.\n if (!positions) {\n return val;\n }\n // Convert back from modivied value to pixels. // #15970\n var pixelVal = (val - localMin) * localA +\n axis.minPixelPadding,\n isInside = pixelVal > 0 && pixelVal < axis.left + axis.len;\n // If the value is not inside the plot area, use the extended positions.\n // (array contains also points that are outside of the plotArea).\n if (!isInside) {\n // When iterating for the first time,\n // get the extended ordinal positional and assign them.\n if (!ordinal.extendedOrdinalPositions) {\n ordinal.extendedOrdinalPositions = (ordinal.getExtendedPositions());\n }\n positions = ordinal.extendedOrdinalPositions;\n }\n // In some cases (especially in early stages of the chart creation) the\n // getExtendedPositions might return undefined.\n if (positions && positions.length) {\n var index = ordinal.getIndexOfPoint(pixelVal,\n positions),\n mantissa = correctFloat(index % 1);\n // Check if the index is inside position array. If true,\n // read/approximate value for that exact index.\n if (index >= 0 && index < positions.length - 1) {\n var leftNeighbour = positions[Math.floor(index)],\n rightNeighbour = positions[Math.ceil(index)],\n distance = rightNeighbour - leftNeighbour;\n return positions[Math.floor(index)] + mantissa * distance;\n }\n // For cases when the index is not in the extended ordinal position\n // array, like when the value we are looking for exceed the\n // available data, approximate that value based on the calculated\n // slope.\n var positionsLength = positions.length,\n firstPositionsValue = positions[0],\n lastPositionsValue = positions[positionsLength - 1],\n slope = (lastPositionsValue - firstPositionsValue) / (positionsLength - 1);\n if (index < 0) {\n return firstPositionsValue + slope * index;\n }\n return lastPositionsValue + slope * (index - positionsLength);\n }\n return val;\n }\n /**\n * Internal function to calculate the precise index in ordinalPositions\n * array.\n * @private\n */\n function getIndexInArray(ordinalPositions, val) {\n var index = OrdinalAxis.Additions.findIndexOf(ordinalPositions,\n val,\n true);\n if (ordinalPositions[index] === val) {\n return index;\n }\n var percent = (val - ordinalPositions[index]) /\n (ordinalPositions[index + 1] - ordinalPositions[index]);\n return index + percent;\n }\n /**\n * @private\n */\n function onAxisAfterInit() {\n var axis = this;\n if (!axis.ordinal) {\n axis.ordinal = new OrdinalAxis.Additions(axis);\n }\n }\n /**\n * @private\n */\n function onAxisFoundExtremes() {\n var axis = this;\n if (axis.isXAxis &&\n defined(axis.options.overscroll) &&\n axis.max === axis.dataMax &&\n (\n // Panning is an execption. We don't want to apply\n // overscroll when panning over the dataMax\n !axis.chart.mouseIsDown ||\n axis.isInternal) && (\n // Scrollbar buttons are the other execption:\n !axis.eventArgs ||\n axis.eventArgs && axis.eventArgs.trigger !== 'navigator')) {\n axis.max += axis.options.overscroll;\n // Live data and buttons require translation for the min:\n if (!axis.isInternal && defined(axis.userMin)) {\n axis.min += axis.options.overscroll;\n }\n }\n }\n /**\n * For ordinal axis, that loads data async, redraw axis after data is\n * loaded. If we don't do that, axis will have the same extremes as\n * previously, but ordinal positions won't be calculated. See #10290\n * @private\n */\n function onAxisAfterSetScale() {\n var axis = this;\n if (axis.horiz && !axis.isDirty) {\n axis.isDirty = axis.isOrdinal &&\n axis.chart.navigator &&\n !axis.chart.navigator.adaptToUpdatedData;\n }\n }\n /**\n * @private\n */\n function onAxisInitialAxisTranslation() {\n var axis = this;\n if (axis.ordinal) {\n axis.ordinal.beforeSetTickPositions();\n axis.tickInterval = axis.ordinal.postProcessTickInterval(axis.tickInterval);\n }\n }\n /**\n * Extending the Chart.pan method for ordinal axes\n * @private\n */\n function onChartPan(e) {\n var chart = this,\n xAxis = chart.xAxis[0],\n overscroll = xAxis.options.overscroll,\n chartX = e.originalEvent.chartX,\n panning = chart.options.chart.panning;\n var runBase = false;\n if (panning &&\n panning.type !== 'y' &&\n xAxis.options.ordinal &&\n xAxis.series.length) {\n var mouseDownX = chart.mouseDownX,\n extremes = xAxis.getExtremes(),\n dataMax = extremes.dataMax,\n min = extremes.min,\n max = extremes.max,\n hoverPoints = chart.hoverPoints,\n closestPointRange = (xAxis.closestPointRange ||\n (xAxis.ordinal && xAxis.ordinal.overscrollPointsRange)),\n pointPixelWidth = (xAxis.translationSlope *\n (xAxis.ordinal.slope || closestPointRange)), \n // how many ordinal units did we move?\n movedUnits = (mouseDownX - chartX) / pointPixelWidth, \n // get index of all the chart's points\n extendedOrdinalPositions = xAxis.ordinal.getExtendedPositions(),\n extendedAxis = {\n ordinal: {\n positions: extendedOrdinalPositions,\n extendedOrdinalPositions: extendedOrdinalPositions\n }\n },\n index2val_1 = xAxis.index2val,\n val2lin_1 = xAxis.val2lin;\n var trimmedRange = void 0,\n ordinalPositions = void 0,\n searchAxisLeft = void 0,\n searchAxisRight = void 0;\n // we have an ordinal axis, but the data is equally spaced\n if (!extendedAxis.ordinal.positions) {\n runBase = true;\n }\n else if (Math.abs(movedUnits) > 1) {\n // Remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (movedUnits < 0) {\n searchAxisLeft = extendedAxis;\n searchAxisRight = xAxis.ordinal.positions ?\n xAxis : extendedAxis;\n }\n else {\n searchAxisLeft = xAxis.ordinal.positions ?\n xAxis : extendedAxis;\n searchAxisRight = extendedAxis;\n }\n // In grouped data series, the last ordinal position represents\n // the grouped data, which is to the left of the real data max.\n // If we don't compensate for this, we will be allowed to pan\n // grouped data series passed the right of the plot area.\n ordinalPositions = searchAxisRight.ordinal.positions;\n if (dataMax >\n ordinalPositions[ordinalPositions.length - 1]) {\n ordinalPositions.push(dataMax);\n }\n // Get the new min and max values by getting the ordinal index\n // for the current extreme, then add the moved units and\n // translate back to values. This happens on the extended\n // ordinal positions if the new position is out of range, else\n // it happens on the current x axis which is smaller and faster.\n chart.fixedRange = max - min;\n trimmedRange = xAxis.navigatorAxis\n .toFixedRange(void 0, void 0, index2val_1.apply(searchAxisLeft, [\n val2lin_1.apply(searchAxisLeft, [min, true]) +\n movedUnits\n ]), index2val_1.apply(searchAxisRight, [\n val2lin_1.apply(searchAxisRight, [max, true]) +\n movedUnits\n ]));\n // Apply it if it is within the available data range\n if (trimmedRange.min >= Math.min(extremes.dataMin, min) &&\n trimmedRange.max <= Math.max(dataMax, max) +\n overscroll) {\n xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, { trigger: 'pan' });\n }\n chart.mouseDownX = chartX; // set new reference for next run\n css(chart.container, { cursor: 'move' });\n }\n }\n else {\n runBase = true;\n }\n // revert to the linear chart.pan version\n if (runBase || (panning && /y/.test(panning.type))) {\n if (overscroll) {\n xAxis.max = xAxis.dataMax + overscroll;\n }\n }\n else {\n e.preventDefault();\n }\n }\n /**\n * @private\n */\n function onSeriesUpdatedData() {\n var xAxis = this.xAxis;\n // Destroy the extended ordinal index on updated data\n // and destroy extendedOrdinalPositions, #16055.\n if (xAxis && xAxis.options.ordinal) {\n delete xAxis.ordinal.index;\n delete xAxis.ordinal.extendedOrdinalPositions;\n }\n }\n /**\n * Translate from a linear axis value to the corresponding ordinal axis\n * position. If there are no gaps in the ordinal axis this will be the\n * same. The translated value is the value that the point would have if\n * the axis was linear, using the same min and max.\n *\n * @private\n * @function Highcharts.Axis#val2lin\n * @param {number} val\n * The axis value.\n * @param {boolean} [toIndex]\n * Whether to return the index in the ordinalPositions or the new value.\n */\n function val2lin(val, toIndex) {\n var axis = this,\n ordinal = axis.ordinal,\n ordinalPositions = ordinal.positions;\n var slope = ordinal.slope,\n extendedOrdinalPositions = ordinal.extendedOrdinalPositions;\n if (!ordinalPositions) {\n return val;\n }\n var ordinalLength = ordinalPositions.length;\n var ordinalIndex;\n // If the searched value is inside visible plotArea, ivastigate the\n // value basing on ordinalPositions.\n if (ordinalPositions[0] <= val &&\n ordinalPositions[ordinalLength - 1] >= val) {\n ordinalIndex = getIndexInArray(ordinalPositions, val);\n // final return value is based on ordinalIndex\n }\n else {\n if (!extendedOrdinalPositions) {\n extendedOrdinalPositions =\n ordinal.getExtendedPositions &&\n ordinal.getExtendedPositions();\n ordinal.extendedOrdinalPositions = extendedOrdinalPositions;\n }\n if (!(extendedOrdinalPositions && extendedOrdinalPositions.length)) {\n return val;\n }\n var length_2 = extendedOrdinalPositions.length;\n if (!slope) {\n slope =\n (extendedOrdinalPositions[length_2 - 1] -\n extendedOrdinalPositions[0]) /\n length_2;\n }\n // OriginalPointReference is equal to the index of\n // first point of ordinalPositions in extendedOrdinalPositions.\n var originalPositionsReference = getIndexInArray(extendedOrdinalPositions,\n ordinalPositions[0]);\n // If the searched value is outside the visiblePlotArea,\n // check if it is inside extendedOrdinalPositions.\n if (val >= extendedOrdinalPositions[0] &&\n val <=\n extendedOrdinalPositions[length_2 - 1]) {\n // Return Value\n ordinalIndex = getIndexInArray(extendedOrdinalPositions, val) -\n originalPositionsReference;\n }\n else {\n // Since ordinal.slope is the average distance between 2\n // points on visible plotArea, this can be used to calculete\n // the approximate position of the point, which is outside\n // the extededOrdinalPositions.\n if (val < extendedOrdinalPositions[0]) {\n var diff = extendedOrdinalPositions[0] - val,\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n -originalPositionsReference -\n approximateIndexOffset;\n }\n else {\n var diff = val -\n extendedOrdinalPositions[length_2 - 1],\n approximateIndexOffset = diff / slope;\n ordinalIndex =\n approximateIndexOffset +\n length_2 -\n originalPositionsReference;\n }\n }\n }\n return toIndex ? ordinalIndex : slope * (ordinalIndex || 0) +\n ordinal.offset;\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Additions(axis) {\n this.index = {};\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculate the ordinal positions before tick positions are calculated.\n * @private\n */\n Additions.prototype.beforeSetTickPositions = function () {\n var axis = this.axis,\n ordinal = axis.ordinal,\n extremes = axis.getExtremes(),\n min = extremes.min,\n max = extremes.max,\n hasBreaks = axis.isXAxis && !!axis.options.breaks,\n isOrdinal = axis.options.ordinal,\n ignoreHiddenSeries = axis.chart.options.chart.ignoreHiddenSeries;\n var len,\n uniqueOrdinalPositions,\n dist,\n minIndex,\n maxIndex,\n slope,\n i,\n ordinalPositions = [],\n overscrollPointsRange = Number.MAX_VALUE,\n useOrdinal = false,\n adjustOrdinalExtremesPoints = false,\n isBoosted = false;\n // Apply the ordinal logic\n if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?\n var distanceBetweenPoint_1 = 0;\n axis.series.forEach(function (series, i) {\n uniqueOrdinalPositions = [];\n // For an axis with multiple series, check if the distance\n // between points is identical throughout all series.\n if (i > 0 &&\n series.options.id !== 'highcharts-navigator-series' &&\n series.processedXData.length > 1) {\n adjustOrdinalExtremesPoints =\n distanceBetweenPoint_1 !== series.processedXData[1] -\n series.processedXData[0];\n }\n distanceBetweenPoint_1 =\n series.processedXData[1] - series.processedXData[0];\n if (series.boosted) {\n isBoosted = series.boosted;\n }\n if ((!ignoreHiddenSeries || series.visible !== false) &&\n (series\n .takeOrdinalPosition !== false ||\n hasBreaks)) {\n // concatenate the processed X data into the existing\n // positions, or the empty array\n ordinalPositions = ordinalPositions.concat(series.processedXData);\n len = ordinalPositions.length;\n // remove duplicates (#1588)\n ordinalPositions.sort(function (a, b) {\n // without a custom function it is sorted as strings\n return a - b;\n });\n overscrollPointsRange = Math.min(overscrollPointsRange, pick(\n // Check for a single-point series:\n series.closestPointRange, overscrollPointsRange));\n if (len) {\n i = 0;\n while (i < len - 1) {\n if (ordinalPositions[i] !==\n ordinalPositions[i + 1]) {\n uniqueOrdinalPositions.push(ordinalPositions[i + 1]);\n }\n i++;\n }\n // Check first item:\n if (uniqueOrdinalPositions[0] !==\n ordinalPositions[0]) {\n uniqueOrdinalPositions.unshift(ordinalPositions[0]);\n }\n ordinalPositions = uniqueOrdinalPositions;\n }\n }\n });\n // If the distance between points is not identical throughout\n // all series, remove the first and last ordinal position to\n // avoid enabling ordinal logic when it is not needed, #17405.\n // Only for boosted series because changes are negligible.\n if (adjustOrdinalExtremesPoints && isBoosted) {\n ordinalPositions.pop();\n ordinalPositions.shift();\n }\n // cache the length\n len = ordinalPositions.length;\n // Check if we really need the overhead of mapping axis data\n // against the ordinal positions. If the series consist of\n // evenly spaced data any way, we don't need any ordinal logic.\n if (len > 2) { // two points have equal distance by default\n dist = ordinalPositions[1] - ordinalPositions[0];\n i = len - 1;\n while (i-- && !useOrdinal) {\n if (ordinalPositions[i + 1] - ordinalPositions[i] !==\n dist) {\n useOrdinal = true;\n }\n }\n // When zooming in on a week, prevent axis padding for\n // weekends even though the data within the week is evenly\n // spaced.\n if (!axis.options.keepOrdinalPadding &&\n (ordinalPositions[0] - min > dist ||\n (max -\n ordinalPositions[ordinalPositions.length - 1]) > dist)) {\n useOrdinal = true;\n }\n }\n else if (axis.options.overscroll) {\n if (len === 2) {\n // Exactly two points, distance for overscroll is fixed:\n overscrollPointsRange =\n ordinalPositions[1] - ordinalPositions[0];\n }\n else if (len === 1) {\n // We have just one point, closest distance is unknown.\n // Assume then it is last point and overscrolled range:\n overscrollPointsRange = axis.options.overscroll;\n ordinalPositions = [\n ordinalPositions[0],\n ordinalPositions[0] + overscrollPointsRange\n ];\n }\n else {\n // In case of zooming in on overscrolled range, stick to\n // the old range:\n overscrollPointsRange = ordinal.overscrollPointsRange;\n }\n }\n // Record the slope and offset to compute the linear values from\n // the array index. Since the ordinal positions may exceed the\n // current range, get the start and end positions within it\n // (#719, #665b)\n if (useOrdinal || axis.forceOrdinal) {\n if (axis.options.overscroll) {\n ordinal.overscrollPointsRange = overscrollPointsRange;\n ordinalPositions = ordinalPositions.concat(ordinal.getOverscrollPositions());\n }\n // Register\n ordinal.positions = ordinalPositions;\n // This relies on the ordinalPositions being set. Use\n // Math.max and Math.min to prevent padding on either sides\n // of the data.\n minIndex = axis.ordinal2lin(// #5979\n Math.max(min, ordinalPositions[0]), true);\n maxIndex = Math.max(axis.ordinal2lin(Math.min(max, ordinalPositions[ordinalPositions.length - 1]), true), 1); // #3339\n // Set the slope and offset of the values compared to the\n // indices in the ordinal positions\n ordinal.slope = slope = (max - min) / (maxIndex - minIndex);\n ordinal.offset = min - (minIndex * slope);\n }\n else {\n ordinal.overscrollPointsRange = pick(axis.closestPointRange, ordinal.overscrollPointsRange);\n ordinal.positions = axis.ordinal.slope = ordinal.offset =\n void 0;\n }\n }\n axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926\n ordinal.groupIntervalFactor = null; // reset for next run\n };\n /**\n * Faster way of using the Array.indexOf method.\n * Works for sorted arrays only with unique values.\n *\n * @param {Array} sortedArray\n * The sorted array inside which we are looking for.\n * @param {number} key\n * The key to being found.\n * @param {boolean} indirectSearch\n * In case of lack of the point in the array, should return\n * value be equal to -1 or the closest smaller index.\n * @private\n */\n Additions.findIndexOf = function (sortedArray, key, indirectSearch) {\n var start = 0,\n end = sortedArray.length - 1,\n middle;\n while (start < end) {\n middle = Math.ceil((start + end) / 2);\n // Key found as the middle element.\n if (sortedArray[middle] <= key) {\n // Continue searching to the right.\n start = middle;\n }\n else {\n // Continue searching to the left.\n end = middle - 1;\n }\n }\n if (sortedArray[start] === key) {\n return start;\n }\n // Key could not be found.\n return !indirectSearch ? -1 : start;\n };\n /**\n * Get the ordinal positions for the entire data set. This is necessary\n * in chart panning because we need to find out what points or data\n * groups are available outside the visible range. When a panning\n * operation starts, if an index for the given grouping does not exists,\n * it is created and cached. This index is deleted on updated data, so\n * it will be regenerated the next time a panning operation starts.\n * @private\n */\n Additions.prototype.getExtendedPositions = function () {\n var ordinal = this,\n axis = ordinal.axis,\n axisProto = axis.constructor.prototype,\n chart = axis.chart,\n grouping = axis.series[0].currentDataGrouping,\n key = grouping ?\n grouping.count + grouping.unitName :\n 'raw',\n overscroll = axis.options.overscroll,\n extremes = axis.getExtremes();\n var fakeAxis,\n fakeSeries = void 0,\n ordinalIndex = ordinal.index;\n // If this is the first time, or the ordinal index is deleted by\n // updatedData,\n // create it.\n if (!ordinalIndex) {\n ordinalIndex = ordinal.index = {};\n }\n if (!ordinalIndex[key]) {\n // Create a fake axis object where the extended ordinal\n // positions are emulated\n fakeAxis = {\n series: [],\n chart: chart,\n forceOrdinal: false,\n getExtremes: function () {\n return {\n min: extremes.dataMin,\n max: extremes.dataMax + overscroll\n };\n },\n getGroupPixelWidth: axisProto.getGroupPixelWidth,\n getTimeTicks: axisProto.getTimeTicks,\n options: {\n ordinal: true\n },\n ordinal: {\n getGroupIntervalFactor: this.getGroupIntervalFactor\n },\n ordinal2lin: axisProto.ordinal2lin,\n getIndexOfPoint: axisProto.getIndexOfPoint,\n val2lin: axisProto.val2lin // #2590\n };\n fakeAxis.ordinal.axis = fakeAxis;\n // Add the fake series to hold the full data, then apply\n // processData to it\n axis.series.forEach(function (series) {\n fakeSeries = {\n xAxis: fakeAxis,\n xData: series.xData.slice(),\n chart: chart,\n destroyGroupedData: H.noop,\n getProcessedData: Series.prototype.getProcessedData,\n applyGrouping: Series.prototype.applyGrouping\n };\n fakeSeries.xData = fakeSeries.xData.concat(ordinal.getOverscrollPositions());\n fakeSeries.options = {\n dataGrouping: grouping ? {\n firstAnchor: 'firstPoint',\n anchor: 'middle',\n lastAnchor: 'lastPoint',\n enabled: true,\n forced: true,\n // doesn't matter which, use the fastest\n approximation: 'open',\n units: [[\n grouping.unitName,\n [grouping.count]\n ]]\n } : {\n enabled: false\n }\n };\n fakeAxis.series.push(fakeSeries);\n series.processData.apply(fakeSeries);\n });\n // Force to use the ordinal when points are evenly spaced (e.g.\n // weeks), #3825.\n if ((fakeSeries.closestPointRange !==\n fakeSeries.basePointRange) &&\n fakeSeries.currentDataGrouping) {\n fakeAxis.forceOrdinal = true;\n }\n // Run beforeSetTickPositions to compute the ordinalPositions\n axis.ordinal.beforeSetTickPositions.apply({ axis: fakeAxis });\n // Cache it\n ordinalIndex[key] = fakeAxis.ordinal.positions;\n }\n return ordinalIndex[key];\n };\n /**\n * Find the factor to estimate how wide the plot area would have been if\n * ordinal gaps were included. This value is used to compute an imagined\n * plot width in order to establish the data grouping interval.\n *\n * A real world case is the intraday-candlestick example. Without this\n * logic, it would show the correct data grouping when viewing a range\n * within each day, but once moving the range to include the gap between\n * two days, the interval would include the cut-away night hours and the\n * data grouping would be wrong. So the below method tries to compensate\n * by identifying the most common point interval, in this case days.\n *\n * An opposite case is presented in issue #718. We have a long array of\n * daily data, then one point is appended one hour after the last point.\n * We expect the data grouping not to change.\n *\n * In the future, if we find cases where this estimation doesn't work\n * optimally, we might need to add a second pass to the data grouping\n * logic, where we do another run with a greater interval if the number\n * of data groups is more than a certain fraction of the desired group\n * count.\n * @private\n */\n Additions.prototype.getGroupIntervalFactor = function (xMin, xMax, series) {\n var ordinal = this,\n axis = ordinal.axis,\n processedXData = series.processedXData,\n len = processedXData.length,\n distances = [];\n var median,\n i,\n groupIntervalFactor = ordinal.groupIntervalFactor;\n // Only do this computation for the first series, let the other\n // inherit it (#2416)\n if (!groupIntervalFactor) {\n // Register all the distances in an array\n for (i = 0; i < len - 1; i++) {\n distances[i] = (processedXData[i + 1] -\n processedXData[i]);\n }\n // Sort them and find the median\n distances.sort(function (a, b) {\n return a - b;\n });\n median = distances[Math.floor(len / 2)];\n // Compensate for series that don't extend through the entire\n // axis extent. #1675.\n xMin = Math.max(xMin, processedXData[0]);\n xMax = Math.min(xMax, processedXData[len - 1]);\n ordinal.groupIntervalFactor = groupIntervalFactor =\n (len * median) / (xMax - xMin);\n }\n // Return the factor needed for data grouping\n return groupIntervalFactor;\n };\n /**\n * Get index of point inside the ordinal positions array.\n *\n * @private\n * @param {number} val\n * The pixel value of a point.\n *\n * @param {Array} [ordinallArray]\n * An array of all points available on the axis for the given data set.\n * Either ordinalPositions if the value is inside the plotArea or\n * extendedOrdinalPositions if not.\n */\n Additions.prototype.getIndexOfPoint = function (val, ordinalArray) {\n var ordinal = this,\n axis = ordinal.axis,\n firstPointVal = ordinal.positions ? ordinal.positions[0] : 0;\n var firstPointX = axis.series[0].points &&\n axis.series[0].points[0] &&\n axis.series[0].points[0].plotX ||\n axis.minPixelPadding; // #15987\n // When more series assign to axis, find the smallest one, #15987.\n if (axis.series.length > 1) {\n axis.series.forEach(function (series) {\n if (series.points &&\n defined(series.points[0]) &&\n defined(series.points[0].plotX) &&\n series.points[0].plotX < firstPointX &&\n // #17128\n series.points[0].plotX >= pick(axis.min, -Infinity)) {\n firstPointX = series.points[0].plotX;\n }\n });\n }\n // Distance in pixels between two points on the ordinal axis in the\n // current zoom.\n var ordinalPointPixelInterval = axis.translationSlope * (ordinal.slope ||\n axis.closestPointRange ||\n ordinal.overscrollPointsRange), \n // toValue for the first point.\n shiftIndex = (val - firstPointX) / ordinalPointPixelInterval;\n return Additions.findIndexOf(ordinalArray, firstPointVal) + shiftIndex;\n };\n /**\n * Get ticks for an ordinal axis within a range where points don't\n * exist. It is required when overscroll is enabled. We can't base on\n * points, because we may not have any, so we use approximated\n * pointRange and generate these ticks between Axis.dataMax,\n * Axis.dataMax + Axis.overscroll evenly spaced. Used in panning and\n * navigator scrolling.\n * @private\n */\n Additions.prototype.getOverscrollPositions = function () {\n var ordinal = this,\n axis = ordinal.axis,\n extraRange = axis.options.overscroll,\n distance = ordinal.overscrollPointsRange,\n positions = [],\n max = axis.dataMax;\n if (defined(distance)) {\n // Max + pointRange because we need to scroll to the last\n while (max <= axis.dataMax + extraRange) {\n max += distance;\n positions.push(max);\n }\n }\n return positions;\n };\n /**\n * Make the tick intervals closer because the ordinal gaps make the\n * ticks spread out or cluster.\n * @private\n */\n Additions.prototype.postProcessTickInterval = function (tickInterval) {\n // Problem: https://jsfiddle.net/highcharts/FQm4E/1/. This is a case\n // where this algorithm doesn't work optimally. In this case, the\n // tick labels are spread out per week, but all the gaps reside\n // within weeks. So we have a situation where the labels are courser\n // than the ordinal gaps, and thus the tick interval should not be\n // altered.\n var ordinal = this,\n axis = ordinal.axis,\n ordinalSlope = ordinal.slope;\n var ret;\n if (ordinalSlope) {\n if (!axis.options.breaks) {\n ret = (tickInterval /\n (ordinalSlope / axis.closestPointRange));\n }\n else {\n ret = axis.closestPointRange || tickInterval; // #7275\n }\n }\n else {\n ret = tickInterval;\n }\n return ret;\n };\n return Additions;\n }());\n OrdinalAxis.Additions = Additions;\n })(OrdinalAxis || (OrdinalAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return OrdinalAxis;\n });\n _registerModule(_modules, 'Series/HLC/HLCPoint.js', [_modules['Core/Series/SeriesRegistry.js']], function (SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnPoint = SeriesRegistry.seriesTypes.column.prototype.pointClass;\n /* *\n *\n * Class\n *\n * */\n var HLCPoint = /** @class */ (function (_super) {\n __extends(HLCPoint, _super);\n function HLCPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.close = void 0;\n _this.high = void 0;\n _this.low = void 0;\n _this.options = void 0;\n _this.plotClose = void 0;\n _this.series = void 0;\n return _this;\n }\n return HLCPoint;\n }(ColumnPoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCPoint;\n });\n _registerModule(_modules, 'Series/HLC/HLCSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * An HLC chart is a style of financial chart used to describe price\n * movements over time. It displays high, low and close values per\n * data point.\n *\n * @sample stock/demo/hlc/\n * HLC chart\n *\n * @extends plotOptions.column\n * @excluding borderColor, borderRadius, borderWidth, crisp, stacking,\n * stack\n * @product highstock\n * @optionparent plotOptions.hlc\n */\n var HLCSeriesDefaults = {\n /**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no\n * grouping is performed. If however the series contains so many points\n * that the spacing is less than the groupPixelWidth, Highcharts will\n * try to group it into appropriate groups so that each is more or less\n * two pixels wide. Defaults to `5`.\n *\n * @type {number}\n * @default 5\n * @product highstock\n * @apioption plotOptions.hlc.dataGrouping.groupPixelWidth\n */\n /**\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @default hlc\n * @product highstock\n * @apioption plotOptions.hlc.dataGrouping.approximation\n */\n /**\n * @default close\n * @apioption plotOptions.hlc.colorKey\n */\n /**\n * The pixel width of the line/border. Defaults to `1`.\n *\n * @sample {highstock} stock/plotoptions/hlc-linewidth/\n * A greater line width\n *\n * @type {number}\n * @default 1\n * @product highstock\n *\n * @public\n */\n lineWidth: 1,\n tooltip: {\n pointFormat: '\\u25CF ' +\n ' {series.name}
' +\n 'High: {point.high}
' +\n 'Low: {point.low}
' +\n 'Close: {point.close}
'\n },\n /**\n * @type {number|null}\n */\n threshold: null,\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The pixel width of the line representing the HLC point.\n *\n * @type {number}\n * @default 3\n * @product highstock\n */\n lineWidth: 3\n }\n },\n /**\n * Determines which one of `high`, `low`, `close` values should\n * be represented as `point.y`, which is later used to set dataLabel\n * position and [compare](#plotOptions.series.compare).\n *\n * @sample {highstock} stock/plotoptions/hlc-pointvalkey/\n * Possible values\n *\n * @type {string}\n * @default close\n * @validvalue [\"high\", \"low\", \"close\"]\n * @product highstock\n * @apioption plotOptions.hlc.pointValKey\n */\n /**\n * @default close\n * @apioption plotOptions.hlc.colorKey\n */\n stickyTracking: true\n };\n /**\n * A `hlc` series. If the [type](#series.hlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.hlc\n * @excluding dataParser, dataURL\n * @product highstock\n * @apioption series.hlc\n */\n /**\n * An array of data points for the series. For the `hlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 4 or 3 values. In this case, the values correspond\n * to `x,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length of 3\\.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 5, 6, 7],\n * [1, 4, 8, 2],\n * [2, 3, 4, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.hlc.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * high: 4,\n * low: 5,\n * close: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * high: 3,\n * low: 6,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number>|*>}\n * @extends series.arearange.data\n * @excluding y, marker\n * @product highstock\n * @apioption series.hlc.data\n */\n /**\n * The closing value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.hlc.data.close\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCSeriesDefaults;\n });\n _registerModule(_modules, 'Series/HLC/HLCSeries.js', [_modules['Series/HLC/HLCPoint.js'], _modules['Series/HLC/HLCSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (HLCPoint, HLCSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Pawel Lysy\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnSeries = SeriesRegistry.seriesTypes.column;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The hlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.hlc\n *\n * @augments Highcharts.Series\n */\n var HLCSeries = /** @class */ (function (_super) {\n __extends(HLCSeries, _super);\n function HLCSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n _this.yData = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the path if close is not between high and low.\n *\n * @param {SVGPath} path the path array of the point\n * @param {number} halfStrokeWidth\n * @param {number} value value of the point to which the stem should be extended\n */\n HLCSeries.prototype.extendStem = function (path, halfStrokeWidth, value) {\n var start = path[0];\n var end = path[1];\n // We don't need to worry about crisp - close value\n // is already crisped and halfStrokeWidth should remove it.\n if (typeof start[2] === 'number') {\n start[2] = Math.max(value + halfStrokeWidth, start[2]);\n }\n if (typeof end[2] === 'number') {\n end[2] = Math.min(value - halfStrokeWidth, end[2]);\n }\n };\n /**\n * Function to create SVGPath of the point based on the\n * plot positions of this point.\n * @private\n */\n HLCSeries.prototype.getPointPath = function (point, graphic) {\n // crisp vector coordinates\n var strokeWidth = graphic.strokeWidth(),\n series = point.series,\n crispCorr = (strokeWidth % 2) / 2, \n // #2596:\n crispX = Math.round(point.plotX) - crispCorr,\n halfWidth = Math.round(point.shapeArgs.width / 2);\n var plotClose = point.plotClose;\n // the vertical stem\n var path = [\n ['M',\n crispX,\n Math.round(point.yBottom)],\n ['L',\n crispX,\n Math.round(point.plotHigh)]\n ];\n // close\n if (point.close !== null) {\n plotClose = Math.round(point.plotClose) + crispCorr;\n path.push(['M', crispX, plotClose], ['L', crispX + halfWidth, plotClose]);\n series.extendStem(path, strokeWidth / 2, plotClose);\n }\n return path;\n };\n /**\n * Draw single point\n * @private\n */\n HLCSeries.prototype.drawSinglePoint = function (point) {\n var series = point.series,\n chart = series.chart;\n var path,\n graphic = point.graphic;\n if (typeof point.plotY !== 'undefined') {\n // Create and/or update the graphic\n if (!graphic) {\n point.graphic = graphic = chart.renderer.path()\n .add(series.group);\n }\n if (!chart.styledMode) {\n graphic.attr(series.pointAttribs(point, (point.selected && 'select'))); // #3897\n }\n // crisp vector coordinates\n path = series.getPointPath(point, graphic);\n graphic[!graphic ? 'attr' : 'animate']({ d: path })\n .addClass(point.getClassName(), true);\n }\n };\n /**\n * Draw the data points\n * @private\n */\n HLCSeries.prototype.drawPoints = function () {\n this.points.forEach(this.drawSinglePoint);\n };\n /**\n * @private\n * @function Highcharts.seriesTypes.hlc#init\n */\n HLCSeries.prototype.init = function () {\n _super.prototype.init.apply(this, arguments);\n this.options.stacking = void 0; // #8817\n };\n /**\n * Postprocess mapping between options and SVG attributes\n * @private\n */\n HLCSeries.prototype.pointAttribs = function (point, state) {\n var attribs = _super.prototype.pointAttribs.call(this,\n point,\n state);\n delete attribs.fill;\n return attribs;\n };\n HLCSeries.prototype.toYData = function (point) {\n // return a plain array for speedy calculation\n return [point.high, point.low, point.close];\n };\n /**\n * Translate data points from raw values x and y to plotX and plotY\n *\n * @private\n * @function Highcharts.seriesTypes.hlc#translate\n */\n HLCSeries.prototype.translate = function () {\n var series = this,\n yAxis = series.yAxis,\n names = (this.pointArrayMap && this.pointArrayMap.slice()) || [],\n translated = names.map(function (name) {\n return \"plot\".concat(name.charAt(0).toUpperCase() + name.slice(1));\n });\n translated.push('yBottom');\n names.push('low');\n _super.prototype.translate.apply(series);\n // Do the translation\n series.points.forEach(function (point) {\n names.forEach(function (name, i) {\n var value = point[name];\n if (value !== null) {\n if (series.dataModify) {\n value = series.dataModify.modifyValue(value);\n }\n point[translated[i]] =\n yAxis.toPixels(value, true);\n }\n });\n // Align the tooltip to the high value to avoid covering the\n // point\n point.tooltipPos[1] =\n point.plotHigh + yAxis.pos - series.chart.plotTop;\n });\n };\n HLCSeries.defaultOptions = merge(ColumnSeries.defaultOptions, HLCSeriesDefaults);\n return HLCSeries;\n }(ColumnSeries));\n extend(HLCSeries.prototype, {\n pointClass: HLCPoint,\n animate: null,\n directTouch: false,\n pointArrayMap: ['high', 'low', 'close'],\n pointAttrToOptions: {\n stroke: 'color',\n 'stroke-width': 'lineWidth'\n },\n pointValKey: 'close'\n });\n SeriesRegistry.registerSeriesType('hlc', HLCSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return HLCSeries;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCPoint.js', [_modules['Core/Series/SeriesRegistry.js']], function (SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var HLCSeries = SeriesRegistry.seriesTypes.hlc;\n /* *\n *\n * Class\n *\n * */\n var OHLCPoint = /** @class */ (function (_super) {\n __extends(OHLCPoint, _super);\n function OHLCPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.open = void 0;\n _this.options = void 0;\n _this.plotOpen = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extend the parent method by adding up or down to the class name.\n * @private\n * @function Highcharts.seriesTypes.ohlc#getClassName\n */\n OHLCPoint.prototype.getClassName = function () {\n return _super.prototype.getClassName.call(this) +\n (this.open < this.close ?\n ' highcharts-point-up' :\n ' highcharts-point-down');\n };\n /**\n * Save upColor as point color (#14826).\n * @private\n * @function Highcharts.seriesTypes.ohlc#resolveUpColor\n */\n OHLCPoint.prototype.resolveUpColor = function () {\n if (this.open < this.close &&\n !this.options.color &&\n this.series.options.upColor) {\n this.color = this.series.options.upColor;\n }\n };\n /**\n * Extend the parent method by saving upColor.\n * @private\n * @function Highcharts.seriesTypes.ohlc#resolveColor\n */\n OHLCPoint.prototype.resolveColor = function () {\n _super.prototype.resolveColor.call(this);\n this.resolveUpColor();\n };\n /**\n * Extend the parent method by saving upColor.\n * @private\n * @function Highcharts.seriesTypes.ohlc#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n OHLCPoint.prototype.getZone = function () {\n var zone = _super.prototype.getZone.call(this);\n this.resolveUpColor();\n return zone;\n };\n /**\n * Extend the parent method by resolving up/down colors (#15849)\n * @private\n **/\n OHLCPoint.prototype.applyOptions = function () {\n _super.prototype.applyOptions.apply(this, arguments);\n if (this.resolveColor) {\n this.resolveColor();\n }\n return this;\n };\n return OHLCPoint;\n }(HLCSeries.prototype.pointClass));\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCPoint;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * An OHLC chart is a style of financial chart used to describe price\n * movements over time. It displays open, high, low and close values per\n * data point.\n *\n * @sample stock/demo/ohlc\n * OHLC chart\n *\n * @extends plotOptions.hlc\n * @product highstock\n * @optionparent plotOptions.ohlc\n */\n var OHLCSeriesDefaults = {\n /**\n * @type {Highcharts.DataGroupingApproximationValue|Function}\n * @default ohlc\n * @product highstock\n * @apioption plotOptions.ohlc.dataGrouping.approximation\n */\n /**\n * Determines which one of `open`, `high`, `low`, `close` values should\n * be represented as `point.y`, which is later used to set dataLabel\n * position and [compare](#plotOptions.series.compare).\n *\n * @default close\n * @validvalue [\"open\", \"high\", \"low\", \"close\"]\n * @product highstock\n * @apioption plotOptions.ohlc.pointValKey\n */\n /**\n * Line color for up points.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n * @apioption plotOptions.ohlc.upColor\n */\n tooltip: {\n pointFormat: '\\u25CF ' +\n ' {series.name}
' +\n 'Open: {point.open}
' +\n 'High: {point.high}
' +\n 'Low: {point.low}
' +\n 'Close: {point.close}
'\n }\n };\n /**\n * The parameter allows setting line series type and use OHLC indicators.\n * Data in OHLC format is required.\n *\n * @sample {highstock} stock/indicators/use-ohlc-data\n * Use OHLC data format to plot line chart\n *\n * @type {boolean}\n * @product highstock\n * @apioption plotOptions.line.useOhlcData\n */\n /**\n * A `ohlc` series. If the [type](#series.ohlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.ohlc\n * @excluding dataParser, dataURL\n * @product highstock\n * @apioption series.ohlc\n */\n /**\n * An array of data points for the series. For the `ohlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n * to `x,open,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length 4\\.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 6, 5, 6, 7],\n * [1, 9, 4, 8, 2],\n * [2, 6, 3, 4, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.ohlc.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * open: 3,\n * high: 4,\n * low: 5,\n * close: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * open: 4,\n * high: 3,\n * low: 6,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number,number>|*>}\n * @extends series.arearange.data\n * @excluding y, marker\n * @product highstock\n * @apioption series.ohlc.data\n */\n /**\n * The closing value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.ohlc.data.close\n */\n /**\n * The opening value of each data point.\n *\n * @type {number}\n * @product highstock\n * @apioption series.ohlc.data.open\n */\n ''; // adds doclets above to transpilat\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCSeriesDefaults;\n });\n _registerModule(_modules, 'Series/OHLC/OHLCSeries.js', [_modules['Series/OHLC/OHLCPoint.js'], _modules['Series/OHLC/OHLCSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (OHLCPoint, OHLCSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var HLCSeries = SeriesRegistry.seriesTypes.hlc;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Constants\n *\n * */\n var composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function onSeriesAfterSetOptions(e) {\n var options = e.options,\n dataGrouping = options.dataGrouping;\n if (dataGrouping &&\n options.useOhlcData &&\n options.id !== 'highcharts-navigator-series') {\n dataGrouping.approximation = 'ohlc';\n }\n }\n /**\n * Add useOhlcData option\n * @private\n */\n function onSeriesInit(eventOptions) {\n // eslint-disable-next-line no-invalid-this\n var series = this,\n options = eventOptions.options;\n if (options.useOhlcData &&\n options.id !== 'highcharts-navigator-series') {\n extend(series, {\n pointValKey: OHLCSeries.prototype.pointValKey,\n // keys: ohlcProto.keys, // @todo potentially nonsense\n pointArrayMap: OHLCSeries.prototype.pointArrayMap,\n toYData: OHLCSeries.prototype.toYData\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * The ohlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.ohlc\n *\n * @augments Highcharts.Series\n */\n var OHLCSeries = /** @class */ (function (_super) {\n __extends(OHLCSeries, _super);\n function OHLCSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n OHLCSeries.compose = function (SeriesClass) {\n var _args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n _args[_i - 1] = arguments[_i];\n }\n if (composedMembers.indexOf(SeriesClass) === -1) {\n composedMembers.push(SeriesClass);\n addEvent(SeriesClass, 'afterSetOptions', onSeriesAfterSetOptions);\n addEvent(SeriesClass, 'init', onSeriesInit);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n OHLCSeries.prototype.getPointPath = function (point, graphic) {\n var path = _super.prototype.getPointPath.call(this,\n point,\n graphic),\n strokeWidth = graphic.strokeWidth(),\n crispCorr = (strokeWidth % 2) / 2,\n crispX = Math.round(point.plotX) - crispCorr,\n halfWidth = Math.round(point.shapeArgs.width / 2);\n var plotOpen = point.plotOpen;\n // crisp vector coordinates\n if (point.open !== null) {\n plotOpen = Math.round(point.plotOpen) + crispCorr;\n path.push(['M', crispX, plotOpen], ['L', crispX - halfWidth, plotOpen]);\n _super.prototype.extendStem.call(this, path, strokeWidth / 2, plotOpen);\n }\n return path;\n };\n /**\n * Postprocess mapping between options and SVG attributes\n * @private\n */\n OHLCSeries.prototype.pointAttribs = function (point, state) {\n var attribs = _super.prototype.pointAttribs.call(this,\n point,\n state),\n options = this.options;\n delete attribs.fill;\n if (!point.options.color &&\n options.upColor &&\n point.open < point.close) {\n attribs.stroke = options.upColor;\n }\n return attribs;\n };\n OHLCSeries.prototype.toYData = function (point) {\n // return a plain array for speedy calculation\n return [point.open, point.high, point.low, point.close];\n };\n OHLCSeries.defaultOptions = merge(HLCSeries.defaultOptions, OHLCSeriesDefaults);\n return OHLCSeries;\n }(HLCSeries));\n extend(OHLCSeries.prototype, {\n pointClass: OHLCPoint,\n pointArrayMap: ['open', 'high', 'low', 'close']\n });\n SeriesRegistry.registerSeriesType('ohlc', OHLCSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return OHLCSeries;\n });\n _registerModule(_modules, 'Series/Candlestick/CandlestickSeriesDefaults.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * A candlestick chart is a style of financial chart used to describe\n * price movements over time.\n *\n * @sample stock/demo/candlestick/\n * Candlestick chart\n *\n * @extends plotOptions.ohlc\n * @excluding borderColor,borderRadius,borderWidth\n * @product highstock\n * @optionparent plotOptions.candlestick\n */\n var CandlestickSeriesDefaults = {\n /**\n * The specific line color for up candle sticks. The default is to\n * inherit the general `lineColor` setting.\n *\n * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n * Candlestick line colors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 1.3.6\n * @product highstock\n * @apioption plotOptions.candlestick.upLineColor\n */\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The pixel width of the line/border around the\n * candlestick.\n *\n * @product highstock\n */\n lineWidth: 2\n }\n },\n /**\n * @type {number|null}\n * @product highstock\n */\n threshold: null,\n /**\n * The color of the line/border of the candlestick.\n *\n * In styled mode,\n the line stroke can be set with the\n * `.highcharts-candlestick-series .highcahrts-point` rule.\n *\n * @see [upLineColor](#plotOptions.candlestick.upLineColor)\n *\n * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n * Candlestick line colors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highstock\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The pixel width of the candlestick line/border. Defaults to `1`.\n *\n *\n * In styled mode,\n the line stroke width can be set with the\n * `.highcharts-candlestick-series .highcahrts-point` rule.\n *\n * @product highstock\n */\n lineWidth: 1,\n /**\n * The fill color of the candlestick when values are rising.\n *\n * In styled mode,\n the up color can be set with the\n * `.highcharts-candlestick-series .highcharts-point-up` rule.\n *\n * @sample {highstock} stock/plotoptions/candlestick-color/\n * Custom colors\n * @sample {highstock} highcharts/css/candlestick/\n * Colors in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highstock\n */\n upColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @product highstock\n */\n stickyTracking: true\n };\n /**\n * A `candlestick` series. If the [type](#series.candlestick.type)\n * option is not specified, it is inherited from [chart.type](\n * #chart.type).\n *\n * @type {*}\n * @extends series,plotOptions.candlestick\n * @excluding dataParser, dataURL, marker\n * @product highstock\n * @apioption series.candlestick\n */\n /**\n * An array of data points for the series. For the `candlestick` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n * to `x,open,high,low,close`. If the first value is a string, it is applied\n * as the name of the point, and the `x` value is inferred. The `x` value can\n * also be omitted, in which case the inner arrays should be of length 4.\n * Then the `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 7, 2, 0, 4],\n * [1, 1, 4, 2, 8],\n * [2, 3, 3, 9, 3]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.candlestick.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * open: 9,\n * high: 2,\n * low: 4,\n * close: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * open: 1,\n * high: 4,\n * low: 7,\n * close: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array|Array<(number|string),number,number,number,number>|*>}\n * @extends series.ohlc.data\n * @excluding y\n * @product highstock\n * @apioption series.candlestick.data\n */\n ''; // adds doclets above to transpilat\n /* *\n *\n * Default Export\n *\n * */\n\n return CandlestickSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Candlestick/CandlestickSeries.js', [_modules['Series/Candlestick/CandlestickSeriesDefaults.js'], _modules['Core/Defaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (CandlestickSeriesDefaults, D, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defaultOptions = D.defaultOptions;\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n OHLCSeries = _a.ohlc;\n var merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The candlestick series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.candlestick\n *\n * @augments Highcharts.seriesTypes.ohlc\n */\n var CandlestickSeries = /** @class */ (function (_super) {\n __extends(CandlestickSeries, _super);\n function CandlestickSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Postprocess mapping between options and SVG attributes\n *\n * @private\n * @function Highcharts.seriesTypes.candlestick#pointAttribs\n */\n CandlestickSeries.prototype.pointAttribs = function (point, state) {\n var attribs = ColumnSeries.prototype.pointAttribs.call(this,\n point,\n state),\n options = this.options,\n isUp = point.open < point.close,\n stroke = options.lineColor || this.color,\n color = point.color || this.color; // (#14826)\n attribs['stroke-width'] = options.lineWidth;\n attribs.fill = point.options.color ||\n (isUp ? (options.upColor || color) : color);\n attribs.stroke = point.options.lineColor ||\n (isUp ? (options.upLineColor || stroke) : stroke);\n // Select or hover states\n if (state) {\n var stateOptions = options.states[state];\n attribs.fill = stateOptions.color || attribs.fill;\n attribs.stroke = stateOptions.lineColor || attribs.stroke;\n attribs['stroke-width'] =\n stateOptions.lineWidth || attribs['stroke-width'];\n }\n return attribs;\n };\n /**\n * Draw the data points.\n *\n * @private\n * @function Highcharts.seriesTypes.candlestick#drawPoints\n */\n CandlestickSeries.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n chart = series.chart,\n reversedYAxis = series.yAxis.reversed;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var graphic = point.graphic,\n plotOpen = void 0,\n plotClose = void 0,\n topBox = void 0,\n bottomBox = void 0,\n hasTopWhisker = void 0,\n hasBottomWhisker = void 0,\n crispCorr = void 0,\n crispX = void 0,\n path = void 0,\n halfWidth = void 0;\n var isNew = !graphic;\n if (typeof point.plotY !== 'undefined') {\n if (!graphic) {\n point.graphic = graphic = chart.renderer.path()\n .add(series.group);\n }\n if (!series.chart.styledMode) {\n graphic\n .attr(series.pointAttribs(point, (point.selected && 'select'))) // #3897\n .shadow(series.options.shadow);\n }\n // Crisp vector coordinates\n crispCorr = (graphic.strokeWidth() % 2) / 2;\n // #2596:\n crispX = Math.round(point.plotX) - crispCorr;\n plotOpen = point.plotOpen;\n plotClose = point.plotClose;\n topBox = Math.min(plotOpen, plotClose);\n bottomBox = Math.max(plotOpen, plotClose);\n halfWidth = Math.round(point.shapeArgs.width / 2);\n hasTopWhisker = reversedYAxis ?\n bottomBox !== point.yBottom :\n Math.round(topBox) !==\n Math.round(point.plotHigh);\n hasBottomWhisker = reversedYAxis ?\n Math.round(topBox) !==\n Math.round(point.plotHigh) :\n bottomBox !== point.yBottom;\n topBox = Math.round(topBox) + crispCorr;\n bottomBox = Math.round(bottomBox) + crispCorr;\n // Create the path. Due to a bug in Chrome 49, the path is\n // first instanciated with no values, then the values\n // pushed. For unknown reasons, instanciating the path array\n // with all the values would lead to a crash when updating\n // frequently (#5193).\n path = [];\n path.push(['M', crispX - halfWidth, bottomBox], ['L', crispX - halfWidth, topBox], ['L', crispX + halfWidth, topBox], ['L', crispX + halfWidth, bottomBox], ['Z'], // Ensure a nice rectangle #2602\n ['M', crispX, topBox], [\n 'L',\n // #460, #2094\n crispX,\n hasTopWhisker ?\n Math.round(reversedYAxis ?\n point.yBottom :\n point.plotHigh) :\n topBox\n ], ['M', crispX, bottomBox], [\n 'L',\n // #460, #2094\n crispX,\n hasBottomWhisker ?\n Math.round(reversedYAxis ?\n point.plotHigh :\n point.yBottom) :\n bottomBox\n ]);\n graphic[isNew ? 'attr' : 'animate']({ d: path })\n .addClass(point.getClassName(), true);\n }\n }\n };\n CandlestickSeries.defaultOptions = merge(OHLCSeries.defaultOptions, defaultOptions.plotOptions, { tooltip: OHLCSeries.defaultOptions.tooltip }, CandlestickSeriesDefaults);\n return CandlestickSeries;\n }(OHLCSeries));\n SeriesRegistry.registerSeriesType('candlestick', CandlestickSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return CandlestickSeries;\n });\n _registerModule(_modules, 'Series/Flags/FlagsPoint.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ColumnPoint = SeriesRegistry.seriesTypes.column.prototype.pointClass;\n var isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n var FlagsPoint = /** @class */ (function (_super) {\n __extends(FlagsPoint, _super);\n function FlagsPoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n _this.ttBelow = false;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n FlagsPoint.prototype.isValid = function () {\n // #9233 - Prevent from treating flags as null points (even if\n // they have no y values defined).\n return isNumber(this.y) || typeof this.y === 'undefined';\n };\n /**\n * @private\n */\n FlagsPoint.prototype.hasNewShapeType = function () {\n var shape = this.options.shape || this.series.options.shape;\n return this.graphic && shape && shape !== this.graphic.symbolKey;\n };\n return FlagsPoint;\n }(ColumnPoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsPoint;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Flags are used to mark events in stock charts. They can be added on the\n * timeline, or attached to a specific series.\n *\n * @sample stock/demo/flags-general/\n * Flags on a line series\n *\n * @extends plotOptions.column\n * @excluding animation, borderColor, borderRadius, borderWidth,\n * colorByPoint, cropThreshold, dataGrouping, pointPadding,\n * pointWidth, turboThreshold\n * @product highstock\n * @optionparent plotOptions.flags\n */\n var FlagsSeriesDefaults = {\n /**\n * In case the flag is placed on a series, on what point key to place\n * it. Line and columns have one key, `y`. In range or OHLC-type series,\n * however, the flag can optionally be placed on the `open`, `high`,\n * `low` or `close` key.\n *\n * @sample {highstock} stock/plotoptions/flags-onkey/\n * Range series, flag on high\n *\n * @type {string}\n * @default y\n * @since 4.2.2\n * @product highstock\n * @validvalue [\"y\", \"open\", \"high\", \"low\", \"close\"]\n * @apioption plotOptions.flags.onKey\n */\n /**\n * The id of the series that the flags should be drawn on. If no id\n * is given, the flags are drawn on the x axis.\n *\n * @sample {highstock} stock/plotoptions/flags/\n * Flags on series and on x axis\n *\n * @type {string}\n * @product highstock\n * @apioption plotOptions.flags.onSeries\n */\n pointRange: 0,\n /**\n * Whether the flags are allowed to overlap sideways. If `false`, the\n * flags are moved sideways using an algorithm that seeks to place every\n * flag as close as possible to its original position.\n *\n * @sample {highstock} stock/plotoptions/flags-allowoverlapx\n * Allow sideways overlap\n *\n * @since 6.0.4\n */\n allowOverlapX: false,\n /**\n * The shape of the marker. Can be one of \"flag\", \"circlepin\",\n * \"squarepin\", or an image of the format `url(/path-to-image.jpg)`.\n * Individual shapes can also be set for each point.\n *\n * @sample {highstock} stock/plotoptions/flags/\n * Different shapes\n *\n * @type {Highcharts.FlagsShapeValue}\n * @product highstock\n */\n shape: 'flag',\n /**\n * When multiple flags in the same series fall on the same value, this\n * number determines the vertical offset between them.\n *\n * @sample {highstock} stock/plotoptions/flags-stackdistance/\n * A greater stack distance\n *\n * @product highstock\n */\n stackDistance: 12,\n /**\n * Text alignment for the text inside the flag.\n *\n * @since 5.0.0\n * @product highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n */\n textAlign: 'center',\n /**\n * Specific tooltip options for flag series. Flag series tooltips are\n * different from most other types in that a flag doesn't have a data\n * value, so the tooltip rather displays the `text` option for each\n * point.\n *\n * @extends plotOptions.series.tooltip\n * @excluding changeDecimals, valueDecimals, valuePrefix, valueSuffix\n * @product highstock\n */\n tooltip: {\n pointFormat: '{point.text}'\n },\n /**\n * @type {number|null}\n */\n threshold: null,\n /**\n * The text to display on each flag. This can be defined on series\n * level, or individually for each point. Defaults to `\"A\"`.\n *\n * @type {string}\n * @default A\n * @product highstock\n * @apioption plotOptions.flags.title\n */\n /**\n * The y position of the top left corner of the flag relative to either\n * the series (if onSeries is defined), or the x axis. Defaults to\n * `-30`.\n *\n * @product highstock\n */\n y: -30,\n /**\n * Whether to use HTML to render the flag texts. Using HTML allows for\n * advanced formatting, images and reliable bi-directional text\n * rendering. Note that exported images won't respect the HTML, and that\n * HTML won't respect Z-index settings.\n *\n * @type {boolean}\n * @default false\n * @since 1.3\n * @product highstock\n * @apioption plotOptions.flags.useHTML\n */\n /**\n * Fixed width of the flag's shape. By default, width is autocalculated\n * according to the flag's title.\n *\n * @sample {highstock} stock/demo/flags-shapes/\n * Flags with fixed width\n *\n * @type {number}\n * @product highstock\n * @apioption plotOptions.flags.width\n */\n /**\n * Fixed height of the flag's shape. By default, height is\n * autocalculated according to the flag's title.\n *\n * @type {number}\n * @product highstock\n * @apioption plotOptions.flags.height\n */\n /**\n * The fill color for the flags.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n fillColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The color of the line/border of the flag.\n *\n * In styled mode, the stroke is set in the\n * `.highcharts-flag-series.highcharts-point` rule.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highstock\n * @apioption plotOptions.flags.lineColor\n */\n /**\n * The pixel width of the flag's line/border.\n *\n * @product highstock\n */\n lineWidth: 1,\n states: {\n /**\n * @extends plotOptions.column.states.hover\n * @product highstock\n */\n hover: {\n /**\n * The color of the line/border of the flag.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The fill or background color of the flag.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n */\n fillColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n }\n },\n /**\n * The text styles of the flag.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-flag-series .highcharts-point` rule.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontSize\": \"11px\", \"fontWeight\": \"bold\"}\n * @product highstock\n */\n style: {\n /** @ignore-option */\n fontSize: '11px',\n /** @ignore-option */\n fontWeight: 'bold'\n }\n };\n /**\n * A `flags` series. If the [type](#series.flags.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.flags\n * @excluding animation, borderColor, borderRadius, borderWidth, colorByPoint,\n * connectNulls, cropThreshold, dashStyle, dataGrouping, dataParser,\n * dataURL, gapSize, gapUnit, linecap, lineWidth, marker,\n * pointPadding, pointWidth, step, turboThreshold, useOhlcData\n * @product highstock\n * @apioption series.flags\n */\n /**\n * An array of data points for the series. For the `flags` series type,\n * points can be given in the following ways:\n *\n * 1. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.flags.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * title: \"A\",\n * text: \"First event\"\n * }, {\n * x: 1,\n * title: \"B\",\n * text: \"Second event\"\n * }]\n * ```\n *\n * @type {Array<*>}\n * @extends series.line.data\n * @excluding dataLabels, marker, name, y\n * @product highstock\n * @apioption series.flags.data\n */\n /**\n * The fill color of an individual flag. By default it inherits from\n * the series color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highstock\n * @apioption series.flags.data.fillColor\n */\n /**\n * The longer text to be shown in the flag's tooltip.\n *\n * @type {string}\n * @product highstock\n * @apioption series.flags.data.text\n */\n /**\n * The short text to be shown on the flag.\n *\n * @type {string}\n * @product highstock\n * @apioption series.flags.data.title\n */\n ''; // keeps doclets above in transpiled file\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSymbols.js', [_modules['Core/Renderer/RendererRegistry.js']], function (RendererRegistry) {\n /* *\n *\n * Imports\n *\n * */\n /* *\n *\n * Composition\n *\n * */\n var FlagsSymbols;\n (function (FlagsSymbols) {\n /* *\n *\n * Constants\n *\n * */\n var modifiedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SVGRendererClass) {\n if (modifiedMembers.indexOf(SVGRendererClass) === -1) {\n modifiedMembers.push(SVGRendererClass);\n var symbols = SVGRendererClass.prototype.symbols;\n symbols.flag = flag;\n createPinSymbol(symbols, 'circle');\n createPinSymbol(symbols, 'square');\n }\n var RendererClass = RendererRegistry.getRendererType();\n // The symbol callbacks are generated on the SVGRenderer object in all\n // browsers. Even VML browsers need this in order to generate shapes in\n // export. Now share them with the VMLRenderer.\n if (modifiedMembers.indexOf(RendererClass)) {\n modifiedMembers.push(RendererClass);\n var symbols = SVGRendererClass.prototype.symbols,\n vmlSymbols = RendererClass.prototype.symbols;\n vmlSymbols.circlepin = symbols.circlepin;\n vmlSymbols.flag = symbols.flag.bind(symbols);\n vmlSymbols.squarepin = symbols.squarepin;\n }\n }\n FlagsSymbols.compose = compose;\n /**\n * Create the flag icon with anchor.\n * @private\n */\n function flag(x, y, w, h, options) {\n var anchorX = (options && options.anchorX) || x,\n anchorY = (options && options.anchorY) || y;\n // To do: unwanted any cast because symbols.circle has wrong type, it\n // actually returns an SVGPathArray\n var path = this.circle(anchorX - 1,\n anchorY - 1, 2, 2);\n path.push(['M', anchorX, anchorY], ['L', x, y + h], ['L', x, y], ['L', x + w, y], ['L', x + w, y + h], ['L', x, y + h], ['Z']);\n return path;\n }\n /**\n * Create the circlepin and squarepin icons with anchor.\n * @private\n */\n function createPinSymbol(symbols, shape) {\n symbols[(shape + 'pin')] = function (x, y, w, h, options) {\n var anchorX = options && options.anchorX,\n anchorY = options && options.anchorY;\n var path;\n // For single-letter flags, make sure circular flags are not taller\n // than their width\n if (shape === 'circle' && h > w) {\n x -= Math.round((h - w) / 2);\n w = h;\n }\n path = (symbols[shape])(x, y, w, h);\n if (anchorX && anchorY) {\n /**\n * If the label is below the anchor, draw the connecting line\n * from the top edge of the label, otherwise start drawing from\n * the bottom edge\n */\n var labelX = anchorX;\n if (shape === 'circle') {\n labelX = x + w / 2;\n }\n else {\n var startSeg = path[0];\n var endSeg = path[1];\n if (startSeg[0] === 'M' && endSeg[0] === 'L') {\n labelX = (startSeg[1] + endSeg[1]) / 2;\n }\n }\n var labelY = (y > anchorY) ? y : y + h;\n path.push([\n 'M',\n labelX,\n labelY\n ], [\n 'L',\n anchorX,\n anchorY\n ]);\n path = path.concat(symbols.circle(anchorX - 1, anchorY - 1, 2, 2));\n }\n return path;\n };\n }\n })(FlagsSymbols || (FlagsSymbols = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return FlagsSymbols;\n });\n _registerModule(_modules, 'Series/OnSeriesComposition.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (ColumnSeries, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var columnProto = ColumnSeries.prototype;\n var seriesProto = Series.prototype;\n var defined = U.defined,\n stableSort = U.stableSort;\n /* *\n *\n * Composition\n *\n * */\n var OnSeriesComposition;\n (function (OnSeriesComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Properties\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getPlotBox = getPlotBox;\n seriesProto_1.translate = translate;\n }\n return SeriesClass;\n }\n OnSeriesComposition.compose = compose;\n /**\n * Override getPlotBox. If the onSeries option is valid, return the plot box\n * of the onSeries, otherwise proceed as usual.\n *\n * @private\n */\n function getPlotBox(name) {\n return seriesProto.getPlotBox.call((this.options.onSeries &&\n this.chart.get(this.options.onSeries)) || this, name);\n }\n OnSeriesComposition.getPlotBox = getPlotBox;\n /**\n * Extend the translate method by placing the point on the related series\n *\n * @private\n */\n function translate() {\n columnProto.translate.apply(this);\n var series = this,\n options = series.options,\n chart = series.chart,\n points = series.points,\n optionsOnSeries = options.onSeries,\n onSeries = (optionsOnSeries &&\n chart.get(optionsOnSeries)),\n step = onSeries && onSeries.options.step,\n onData = (onSeries && onSeries.points),\n inverted = chart.inverted,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var cursor = points.length - 1,\n point,\n lastPoint,\n onKey = options.onKey || 'y',\n i = onData && onData.length,\n xOffset = 0,\n leftPoint,\n lastX,\n rightPoint,\n currentDataGrouping,\n distanceRatio;\n // relate to a master series\n if (onSeries && onSeries.visible && i) {\n xOffset = (onSeries.pointXOffset || 0) + (onSeries.barW || 0) / 2;\n currentDataGrouping = onSeries.currentDataGrouping;\n lastX = (onData[i - 1].x +\n (currentDataGrouping ? currentDataGrouping.totalRange : 0)); // #2374\n // sort the data points\n stableSort(points, function (a, b) { return (a.x - b.x); });\n onKey = 'plot' + onKey[0].toUpperCase() + onKey.substr(1);\n while (i-- && points[cursor]) {\n leftPoint = onData[i];\n point = points[cursor];\n point.y = leftPoint.y;\n if (leftPoint.x <= point.x &&\n typeof leftPoint[onKey] !== 'undefined') {\n if (point.x <= lastX) { // #803\n point.plotY = leftPoint[onKey];\n // interpolate between points, #666\n if (leftPoint.x < point.x &&\n !step) {\n rightPoint = onData[i + 1];\n if (rightPoint &&\n typeof rightPoint[onKey] !== 'undefined') {\n // the distance ratio, between 0 and 1\n distanceRatio =\n (point.x - leftPoint.x) /\n (rightPoint.x - leftPoint.x);\n point.plotY +=\n distanceRatio *\n // the plotY distance\n (rightPoint[onKey] - leftPoint[onKey]);\n point.y +=\n distanceRatio *\n (rightPoint.y - leftPoint.y);\n }\n }\n }\n cursor--;\n i++; // check again for points in the same x position\n if (cursor < 0) {\n break;\n }\n }\n }\n }\n // Add plotY position and handle stacking\n points.forEach(function (point, i) {\n var stackIndex;\n point.plotX += xOffset; // #2049\n // Undefined plotY means the point is either on axis, outside series\n // range or hidden series. If the series is outside the range of the\n // x axis it should fall through with an undefined plotY, but then\n // we must remove the shapeArgs (#847). For inverted charts, we need\n // to calculate position anyway, because series.invertGroups is not\n // defined\n if (typeof point.plotY === 'undefined' || inverted) {\n if (point.plotX >= 0 &&\n point.plotX <= xAxis.len) {\n // We're inside xAxis range\n if (inverted) {\n point.plotY = xAxis.translate(point.x, 0, 1, 0, 1);\n point.plotX = defined(point.y) ?\n yAxis.translate(point.y, 0, 0, 0, 1) :\n 0;\n }\n else {\n point.plotY = (xAxis.opposite ? 0 : series.yAxis.len) +\n xAxis.offset; // For the windbarb demo\n }\n }\n else {\n point.shapeArgs = {}; // 847\n }\n }\n // if multiple flags appear at the same x, order them into a stack\n lastPoint = points[i - 1];\n if (lastPoint && lastPoint.plotX === point.plotX) {\n if (typeof lastPoint.stackIndex === 'undefined') {\n lastPoint.stackIndex = 0;\n }\n stackIndex = lastPoint.stackIndex + 1;\n }\n point.stackIndex = stackIndex; // #3639\n });\n this.onSeries = onSeries;\n }\n OnSeriesComposition.translate = translate;\n })(OnSeriesComposition || (OnSeriesComposition = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return OnSeriesComposition;\n });\n _registerModule(_modules, 'Series/Flags/FlagsSeries.js', [_modules['Series/Flags/FlagsPoint.js'], _modules['Series/Flags/FlagsSeriesDefaults.js'], _modules['Series/Flags/FlagsSymbols.js'], _modules['Core/Globals.js'], _modules['Series/OnSeriesComposition.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (FlagsPoint, FlagsSeriesDefaults, FlagsSymbols, H, OnSeriesComposition, R, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series,\n ColumnSeries = SeriesRegistry.seriesTypes.column;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n wrap = U.wrap;\n /* *\n *\n * Classes\n *\n * */\n /**\n * The Flags series.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.flags\n *\n * @augments Highcharts.Series\n */\n var FlagsSeries = /** @class */ (function (_super) {\n __extends(FlagsSeries, _super);\n function FlagsSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Disable animation, but keep clipping (#8546).\n * @private\n */\n FlagsSeries.prototype.animate = function (init) {\n if (init) {\n this.setClip();\n }\n };\n /**\n * Draw the markers.\n * @private\n */\n FlagsSeries.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n chart = series.chart,\n renderer = chart.renderer,\n inverted = chart.inverted,\n options = series.options,\n optionsY = options.y,\n yAxis = series.yAxis,\n boxesMap = {},\n boxes = [];\n var plotX,\n plotY,\n shape,\n i,\n point,\n graphic,\n stackIndex,\n anchorY,\n attribs,\n outsideRight,\n centered;\n i = points.length;\n while (i--) {\n point = points[i];\n outsideRight =\n (inverted ? point.plotY : point.plotX) >\n series.xAxis.len;\n plotX = point.plotX;\n stackIndex = point.stackIndex;\n shape = point.options.shape || options.shape;\n plotY = point.plotY;\n if (typeof plotY !== 'undefined') {\n plotY = point.plotY + optionsY -\n (typeof stackIndex !== 'undefined' &&\n (stackIndex * options.stackDistance));\n }\n // skip connectors for higher level stacked points\n point.anchorX = stackIndex ? void 0 : point.plotX;\n anchorY = stackIndex ? void 0 : point.plotY;\n centered = shape !== 'flag';\n graphic = point.graphic;\n // Only draw the point if y is defined and the flag is within\n // the visible area\n if (typeof plotY !== 'undefined' &&\n plotX >= 0 &&\n !outsideRight) {\n // #15384\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Create the flag\n if (!graphic) {\n graphic = point.graphic = renderer.label('', null, null, shape, null, null, options.useHTML)\n .addClass('highcharts-point')\n .add(series.markerGroup);\n // Add reference to the point for tracker (#6303)\n if (point.graphic.div) {\n point.graphic.div.point = point;\n }\n graphic.isNew = true;\n }\n graphic.attr({\n align: centered ? 'center' : 'left',\n width: options.width,\n height: options.height,\n 'text-align': options.textAlign\n });\n if (!chart.styledMode) {\n graphic\n .attr(series.pointAttribs(point))\n .css(merge(options.style, point.style))\n .shadow(options.shadow);\n }\n if (plotX > 0) { // #3119\n plotX -= graphic.strokeWidth() % 2; // #4285\n }\n // Plant the flag\n attribs = {\n y: plotY,\n anchorY: anchorY\n };\n if (options.allowOverlapX) {\n attribs.x = plotX;\n attribs.anchorX = point.anchorX;\n }\n graphic.attr({\n text: point.options.title || options.title || 'A'\n })[graphic.isNew ? 'attr' : 'animate'](attribs);\n // Rig for the distribute function\n if (!options.allowOverlapX) {\n if (!boxesMap[point.plotX]) {\n boxesMap[point.plotX] = {\n align: centered ? 0.5 : 0,\n size: graphic.width,\n target: plotX,\n anchorX: plotX\n };\n }\n else {\n boxesMap[point.plotX].size = Math.max(boxesMap[point.plotX].size, graphic.width);\n }\n }\n // Set the tooltip anchor position\n point.tooltipPos = [\n plotX,\n plotY + yAxis.pos - chart.plotTop\n ]; // #6327\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n }\n // Handle X-dimension overlapping\n if (!options.allowOverlapX) {\n var maxDistance_1 = 100;\n objectEach(boxesMap, function (box) {\n box.plotX = box.anchorX;\n boxes.push(box);\n maxDistance_1 = Math.max(box.size, maxDistance_1);\n });\n // If necessary (for overlapping or long labels) distribute it\n // depending on the label width or a hardcoded value, #16041.\n distribute(boxes, inverted ? yAxis.len : this.xAxis.len, maxDistance_1);\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point_1 = points_1[_i];\n var plotX_1 = point_1.plotX,\n graphic_1 = point_1.graphic,\n box = graphic_1 && boxesMap[plotX_1];\n if (box && graphic_1) {\n // Hide flag when its box position is not specified\n // (#8573, #9299)\n if (!defined(box.pos)) {\n graphic_1.hide().isNew = true;\n }\n else {\n graphic_1[graphic_1.isNew ? 'attr' : 'animate']({\n x: box.pos + (box.align || 0) * box.size,\n anchorX: point_1.anchorX\n }).show().isNew = false;\n }\n }\n }\n }\n // Can be a mix of SVG and HTML and we need events for both (#6303)\n if (options.useHTML && series.markerGroup) {\n wrap(series.markerGroup, 'on', function (proceed) {\n return SVGElement.prototype.on.apply(\n // for HTML\n // eslint-disable-next-line no-invalid-this\n proceed.apply(this, [].slice.call(arguments, 1)), \n // and for SVG\n [].slice.call(arguments, 1));\n });\n }\n };\n /**\n * Extend the column trackers with listeners to expand and contract\n * stacks.\n * @private\n */\n FlagsSeries.prototype.drawTracker = function () {\n var series = this,\n points = series.points;\n _super.prototype.drawTracker.call(this);\n var _loop_1 = function (point) {\n var graphic = point.graphic;\n if (graphic) {\n if (point.unbindMouseOver) {\n point.unbindMouseOver();\n }\n point.unbindMouseOver = addEvent(graphic.element, 'mouseover', function () {\n // Raise this point\n if (point.stackIndex > 0 &&\n !point.raised) {\n point._y = graphic.y;\n graphic.attr({\n y: point._y - 8\n });\n point.raised = true;\n }\n // Revert other raised points\n for (var _i = 0, points_3 = points; _i < points_3.length; _i++) {\n var otherPoint = points_3[_i];\n if (otherPoint !== point &&\n otherPoint.raised &&\n otherPoint.graphic) {\n otherPoint.graphic.attr({\n y: otherPoint._y\n });\n otherPoint.raised = false;\n }\n }\n });\n }\n };\n /* *\n * Bring each stacked flag up on mouse over, this allows readability\n * of vertically stacked elements as well as tight points on the x\n * axis. #1924.\n */\n for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {\n var point = points_2[_i];\n _loop_1(point);\n }\n };\n /**\n * Get presentational attributes\n * @private\n */\n FlagsSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options,\n color = (point && point.color) || this.color;\n var lineColor = options.lineColor,\n lineWidth = (point && point.lineWidth),\n fill = (point && point.fillColor) || options.fillColor;\n if (state) {\n fill = options.states[state].fillColor;\n lineColor = options.states[state].lineColor;\n lineWidth = options.states[state].lineWidth;\n }\n return {\n fill: fill || color,\n stroke: lineColor || color,\n 'stroke-width': lineWidth || options.lineWidth || 0\n };\n };\n /**\n * @private\n */\n FlagsSeries.prototype.setClip = function () {\n Series.prototype.setClip.apply(this, arguments);\n if (this.options.clip !== false &&\n this.sharedClipKey &&\n this.markerGroup) {\n this.markerGroup.clip(this.chart.sharedClips[this.sharedClipKey]);\n }\n };\n FlagsSeries.compose = FlagsSymbols.compose;\n FlagsSeries.defaultOptions = merge(ColumnSeries.defaultOptions, FlagsSeriesDefaults);\n return FlagsSeries;\n }(ColumnSeries));\n OnSeriesComposition.compose(FlagsSeries);\n extend(FlagsSeries.prototype, {\n allowDG: false,\n forceCrop: true,\n invertible: false,\n noSharedTooltip: true,\n pointClass: FlagsPoint,\n sorted: false,\n takeOrdinalPosition: false,\n trackerGroups: ['markerGroup'],\n buildKDTree: noop,\n /**\n * Inherit the initialization from base Series.\n * @private\n */\n init: Series.prototype.init\n });\n SeriesRegistry.registerSeriesType('flags', FlagsSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"circlepin\"|\"flag\"|\"squarepin\"} Highcharts.FlagsShapeValue\n */\n ''; // detach doclets above\n\n return FlagsSeries;\n });\n _registerModule(_modules, 'Core/Chart/StockChart.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Defaults.js'], _modules['Stock/Navigator/NavigatorDefaults.js'], _modules['Stock/RangeSelector/RangeSelectorDefaults.js'], _modules['Stock/Scrollbar/ScrollbarDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (Axis, Chart, F, D, NavigatorDefaults, RangeSelectorDefaults, ScrollbarDefaults, Series, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var format = F.format;\n var getOptions = D.getOptions;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /**\n * Stock-optimized chart. Use {@link Highcharts.Chart|Chart} for common charts.\n *\n * @requires modules/stock\n *\n * @class\n * @name Highcharts.StockChart\n * @extends Highcharts.Chart\n */\n var StockChart = /** @class */ (function (_super) {\n __extends(StockChart, _super);\n function StockChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the chart. The constructor's arguments are passed on\n * directly.\n *\n * @function Highcharts.StockChart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.StockChart#event:init\n * @emits Highcharts.StockChart#event:afterInit\n */\n StockChart.prototype.init = function (userOptions, callback) {\n var defaultOptions = getOptions(),\n xAxisOptions = userOptions.xAxis,\n yAxisOptions = userOptions.yAxis, \n // Always disable startOnTick:true on the main axis when the\n // navigator is enabled (#1090)\n navigatorEnabled = pick(userOptions.navigator && userOptions.navigator.enabled,\n NavigatorDefaults.enabled,\n true);\n // Avoid doing these twice\n userOptions.xAxis = userOptions.yAxis = void 0;\n var options = merge({\n chart: {\n panning: {\n enabled: true,\n type: 'x'\n },\n zooming: {\n pinchType: 'x'\n }\n },\n navigator: {\n enabled: navigatorEnabled\n },\n scrollbar: {\n // #4988 - check if setOptions was called\n enabled: pick(ScrollbarDefaults.enabled,\n true)\n },\n rangeSelector: {\n // #4988 - check if setOptions was called\n enabled: pick(RangeSelectorDefaults.rangeSelector.enabled,\n true)\n },\n title: {\n text: null\n },\n tooltip: {\n split: pick(defaultOptions.tooltip.split,\n true),\n crosshairs: true\n },\n legend: {\n enabled: false\n }\n },\n userOptions, // user's options\n {\n isStock: true // internal flag\n });\n userOptions.xAxis = xAxisOptions;\n userOptions.yAxis = yAxisOptions;\n // apply X axis options to both single and multi y axes\n options.xAxis = splat(userOptions.xAxis || {}).map(function (xAxisOptions, i) {\n return merge(getDefaultAxisOptions('xAxis', xAxisOptions), defaultOptions.xAxis, // #3802\n // #7690\n defaultOptions.xAxis && defaultOptions.xAxis[i], xAxisOptions, // user options\n getForcedAxisOptions('xAxis', userOptions));\n });\n // apply Y axis options to both single and multi y axes\n options.yAxis = splat(userOptions.yAxis || {}).map(function (yAxisOptions, i) {\n return merge(getDefaultAxisOptions('yAxis', yAxisOptions), defaultOptions.yAxis, // #3802\n // #7690\n defaultOptions.yAxis && defaultOptions.yAxis[i], yAxisOptions // user options\n );\n });\n _super.prototype.init.call(this, options, callback);\n };\n /**\n * Factory for creating different axis types.\n * Extended to add stock defaults.\n *\n * @private\n * @function Highcharts.StockChart#createAxis\n * @param {string} type\n * An axis type.\n * @param {Chart.CreateAxisOptionsObject} options\n * The axis creation options.\n */\n StockChart.prototype.createAxis = function (type, options) {\n options.axis = merge(getDefaultAxisOptions(type, options.axis), options.axis, getForcedAxisOptions(type, this.userOptions));\n return _super.prototype.createAxis.call(this, type, options);\n };\n return StockChart;\n }(Chart));\n /* eslint-disable no-invalid-this, valid-jsdoc */\n (function (StockChart) {\n /**\n * Factory function for creating new stock charts. Creates a new\n * {@link Highcharts.StockChart|StockChart} object with different default\n * options than the basic Chart.\n *\n * @example\n * let chart = Highcharts.stockChart('container', {\n * series: [{\n * data: [1, 2, 3, 4, 5, 6, 7, 8, 9],\n * pointInterval: 24 * 60 * 60 * 1000\n * }]\n * });\n *\n * @function Highcharts.stockChart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure as described in the\n * [options reference](https://api.highcharts.com/highstock).\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * A function to execute when the chart object is finished loading\n * and rendering. In most cases the chart is built in one thread,\n * but in Internet Explorer version 8 or less the chart is sometimes\n * initialized before the document is ready, and in these cases the\n * chart object will not be finished synchronously. As a\n * consequence, code that relies on the newly built Chart object\n * should always run in the callback. Defining a\n * [chart.events.load](https://api.highcharts.com/highstock/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.StockChart}\n * The chart object.\n */\n function stockChart(a, b, c) {\n return new StockChart(a, b, c);\n }\n StockChart.stockChart = stockChart;\n })(StockChart || (StockChart = {}));\n /**\n * Get stock-specific default axis options.\n *\n * @private\n * @function getDefaultAxisOptions\n */\n function getDefaultAxisOptions(type, options) {\n if (type === 'xAxis') {\n return {\n minPadding: 0,\n maxPadding: 0,\n overscroll: 0,\n ordinal: true,\n title: {\n text: null\n },\n labels: {\n overflow: 'justify'\n },\n showLastLabel: true\n };\n }\n if (type === 'yAxis') {\n return {\n labels: {\n y: -2\n },\n opposite: pick(options.opposite, true),\n showLastLabel: !!(\n // #6104, show last label by default for category axes\n options.categories ||\n options.type === 'category'),\n title: {\n text: null\n }\n };\n }\n return {};\n }\n /**\n * Get stock-specific forced axis options.\n *\n * @private\n * @function getForcedAxisOptions\n */\n function getForcedAxisOptions(type, chartOptions) {\n if (type === 'xAxis') {\n // Always disable startOnTick:true on the main axis when the navigator\n // is enabled (#1090)\n var navigatorEnabled = pick(chartOptions.navigator && chartOptions.navigator.enabled,\n NavigatorDefaults.enabled,\n true);\n var axisOptions = {\n type: 'datetime',\n categories: void 0\n };\n if (navigatorEnabled) {\n axisOptions.startOnTick = false;\n axisOptions.endOnTick = false;\n }\n return axisOptions;\n }\n return {};\n }\n /* *\n *\n * Compositions\n *\n * */\n // Handle som Stock-specific series defaults, override the plotOptions before\n // series options are handled.\n addEvent(Series, 'setOptions', function (e) {\n var overrides;\n if (this.chart.options.isStock) {\n if (this.is('column') || this.is('columnrange')) {\n overrides = {\n borderWidth: 0,\n shadow: false\n };\n }\n else if (!this.is('scatter') && !this.is('sma')) {\n overrides = {\n marker: {\n enabled: false,\n radius: 2\n }\n };\n }\n if (overrides) {\n e.plotOptions[this.type] = merge(e.plotOptions[this.type], overrides);\n }\n }\n });\n // Override the automatic label alignment so that the first Y axis' labels\n // are drawn on top of the grid line, and subsequent axes are drawn outside\n addEvent(Axis, 'autoLabelAlign', function (e) {\n var chart = this.chart,\n options = this.options,\n panes = chart._labelPanes = chart._labelPanes || {},\n key,\n labelOptions = this.options.labels;\n if (this.chart.options.isStock && this.coll === 'yAxis') {\n key = options.top + ',' + options.height;\n // do it only for the first Y axis of each pane\n if (!panes[key] && labelOptions.enabled) {\n if (labelOptions.x === 15) { // default\n labelOptions.x = 0;\n }\n if (typeof labelOptions.align === 'undefined') {\n labelOptions.align = 'right';\n }\n panes[key] = this;\n e.align = 'right';\n e.preventDefault();\n }\n }\n });\n // Clear axis from label panes (#6071)\n addEvent(Axis, 'destroy', function () {\n var chart = this.chart, key = this.options && (this.options.top + ',' + this.options.height);\n if (key && chart._labelPanes && chart._labelPanes[key] === this) {\n delete chart._labelPanes[key];\n }\n });\n // Override getPlotLinePath to allow for multipane charts\n addEvent(Axis, 'getPlotLinePath', function (e) {\n var axis = this,\n series = (this.isLinked && !this.series ?\n this.linkedParent.series :\n this.series),\n chart = axis.chart,\n renderer = chart.renderer,\n axisLeft = axis.left,\n axisTop = axis.top,\n x1,\n y1,\n x2,\n y2,\n result = [],\n axes = [], // #3416 need a default array\n axes2,\n uniqueAxes,\n translatedValue = e.translatedValue,\n value = e.value,\n force = e.force,\n transVal;\n /**\n * Return the other axis based on either the axis option or on related\n * series.\n * @private\n */\n function getAxis(coll) {\n var otherColl = coll === 'xAxis' ? 'yAxis' : 'xAxis',\n opt = axis.options[otherColl];\n // Other axis indexed by number\n if (isNumber(opt)) {\n return [chart[otherColl][opt]];\n }\n // Other axis indexed by id (like navigator)\n if (isString(opt)) {\n return [chart.get(opt)];\n }\n // Auto detect based on existing series\n return series.map(function (s) {\n return s[otherColl];\n });\n }\n if ( // For stock chart, by default render paths across the panes\n // except the case when `acrossPanes` is disabled by user (#6644)\n (chart.options.isStock && e.acrossPanes !== false) &&\n // Ignore in case of colorAxis or zAxis. #3360, #3524, #6720\n axis.coll === 'xAxis' || axis.coll === 'yAxis') {\n e.preventDefault();\n // Get the related axes based on series\n axes = getAxis(axis.coll);\n // Get the related axes based options.*Axis setting #2810\n axes2 = (axis.isXAxis ? chart.yAxis : chart.xAxis);\n axes2.forEach(function (A) {\n if (defined(A.options.id) ?\n A.options.id.indexOf('navigator') === -1 :\n true) {\n var a = (A.isXAxis ? 'yAxis' : 'xAxis'),\n rax = (defined(A.options[a]) ?\n chart[a][A.options[a]] :\n chart[a][0]);\n if (axis === rax) {\n axes.push(A);\n }\n }\n });\n // Remove duplicates in the axes array. If there are no axes in the axes\n // array, we are adding an axis without data, so we need to populate\n // this with grid lines (#2796).\n uniqueAxes = axes.length ?\n [] :\n [axis.isXAxis ? chart.yAxis[0] : chart.xAxis[0]]; // #3742\n axes.forEach(function (axis2) {\n if (uniqueAxes.indexOf(axis2) === -1 &&\n // Do not draw on axis which overlap completely. #5424\n !find(uniqueAxes, function (unique) {\n return unique.pos === axis2.pos && unique.len === axis2.len;\n })) {\n uniqueAxes.push(axis2);\n }\n });\n transVal = pick(translatedValue, axis.translate(value, void 0, void 0, e.old));\n if (isNumber(transVal)) {\n if (axis.horiz) {\n uniqueAxes.forEach(function (axis2) {\n var skip;\n y1 = axis2.pos;\n y2 = y1 + axis2.len;\n x1 = x2 = Math.round(transVal + axis.transB);\n // outside plot area\n if (force !== 'pass' &&\n (x1 < axisLeft || x1 > axisLeft + axis.width)) {\n if (force) {\n x1 = x2 = clamp(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n skip = true;\n }\n }\n if (!skip) {\n result.push(['M', x1, y1], ['L', x2, y2]);\n }\n });\n }\n else {\n uniqueAxes.forEach(function (axis2) {\n var skip;\n x1 = axis2.pos;\n x2 = x1 + axis2.len;\n y1 = y2 = Math.round(axisTop + axis.height - transVal);\n // outside plot area\n if (force !== 'pass' &&\n (y1 < axisTop || y1 > axisTop + axis.height)) {\n if (force) {\n y1 = y2 = clamp(y1, axisTop, axisTop + axis.height);\n }\n else {\n skip = true;\n }\n }\n if (!skip) {\n result.push(['M', x1, y1], ['L', x2, y2]);\n }\n });\n }\n }\n e.path = result.length > 0 ?\n renderer.crispPolyLine(result, e.lineWidth || 1) :\n // #3557 getPlotLinePath in regular Highcharts also returns null\n null;\n }\n });\n /**\n * Function to crisp a line with multiple segments\n *\n * @private\n * @function Highcharts.SVGRenderer#crispPolyLine\n */\n SVGRenderer.prototype.crispPolyLine = function (points, width) {\n // points format: [['M', 0, 0], ['L', 100, 0]]\n // normalize to a crisp line\n for (var i = 0; i < points.length; i = i + 2) {\n var start = points[i],\n end = points[i + 1];\n if (start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math.round(start[1]) - (width % 2 / 2);\n }\n if (start[2] === end[2]) {\n start[2] = end[2] =\n Math.round(start[2]) + (width % 2 / 2);\n }\n }\n return points;\n };\n // Wrapper to hide the label\n addEvent(Axis, 'afterHideCrosshair', function () {\n if (this.crossLabel) {\n this.crossLabel = this.crossLabel.hide();\n }\n });\n // Extend crosshairs to also draw the label\n addEvent(Axis, 'afterDrawCrosshair', function (event) {\n // Check if the label has to be drawn\n if (!this.crosshair ||\n !this.crosshair.label ||\n !this.crosshair.label.enabled ||\n !this.cross ||\n !isNumber(this.min) ||\n !isNumber(this.max)) {\n return;\n }\n var chart = this.chart, log = this.logarithmic, options = this.crosshair.label, // the label's options\n horiz = this.horiz, // axis orientation\n opposite = this.opposite, // axis position\n left = this.left, // left position\n top = this.top, // top position\n crossLabel = this.crossLabel, // the svgElement\n posx, posy, crossBox, formatOption = options.format, formatFormat = '', limit, align, tickInside = this.options.tickPosition === 'inside', snap = this.crosshair.snap !== false, offset = 0, \n // Use last available event (#5287)\n e = event.e || (this.cross && this.cross.e), point = event.point, min = this.min, max = this.max;\n if (log) {\n min = log.lin2log(min);\n max = log.lin2log(max);\n }\n align = (horiz ? 'center' : opposite ?\n (this.labelAlign === 'right' ? 'right' : 'left') :\n (this.labelAlign === 'left' ? 'left' : 'center'));\n // If the label does not exist yet, create it.\n if (!crossLabel) {\n crossLabel = this.crossLabel = chart.renderer\n .label('', 0, void 0, options.shape || 'callout')\n .addClass('highcharts-crosshair-label highcharts-color-' + (point && point.series ?\n point.series.colorIndex :\n this.series[0] && this.series[0].colorIndex))\n .attr({\n align: options.align || align,\n padding: pick(options.padding, 8),\n r: pick(options.borderRadius, 3),\n zIndex: 2\n })\n .add(this.labelGroup);\n // Presentational\n if (!chart.styledMode) {\n crossLabel\n .attr({\n fill: options.backgroundColor ||\n point && point.series && point.series.color || // #14888\n \"#666666\" /* Palette.neutralColor60 */,\n stroke: options.borderColor || '',\n 'stroke-width': options.borderWidth || 0\n })\n .css(extend({\n color: \"#ffffff\" /* Palette.backgroundColor */,\n fontWeight: 'normal',\n fontSize: '11px',\n textAlign: 'center'\n }, options.style || {}));\n }\n }\n if (horiz) {\n posx = snap ? (point.plotX || 0) + left : e.chartX;\n posy = top + (opposite ? 0 : this.height);\n }\n else {\n posx = opposite ? this.width + left : 0;\n posy = snap ? (point.plotY || 0) + top : e.chartY;\n }\n if (!formatOption && !options.formatter) {\n if (this.dateTime) {\n formatFormat = '%b %d, %Y';\n }\n formatOption =\n '{value' + (formatFormat ? ':' + formatFormat : '') + '}';\n }\n // Show the label\n var value = snap ?\n (this.isXAxis ? point.x : point.y) :\n this.toValue(horiz ? e.chartX : e.chartY);\n // Crosshair should be rendered within Axis range (#7219). Also, the point\n // of currentPriceIndicator should be inside the plot area, #14879.\n var isInside = point && point.series ?\n point.series.isPointInside(point) :\n (isNumber(value) && value > min && value < max);\n var text = '';\n if (formatOption) {\n text = format(formatOption, { value: value }, chart);\n }\n else if (options.formatter && isNumber(value)) {\n text = options.formatter.call(this, value);\n }\n crossLabel.attr({\n text: text,\n x: posx,\n y: posy,\n visibility: isInside ? 'inherit' : 'hidden'\n });\n crossBox = crossLabel.getBBox();\n // now it is placed we can correct its position\n if (isNumber(crossLabel.y)) {\n if (horiz) {\n if ((tickInside && !opposite) || (!tickInside && opposite)) {\n posy = crossLabel.y - crossBox.height;\n }\n }\n else {\n posy = crossLabel.y - (crossBox.height / 2);\n }\n }\n // check the edges\n if (horiz) {\n limit = {\n left: left - crossBox.x,\n right: left + this.width - crossBox.x\n };\n }\n else {\n limit = {\n left: this.labelAlign === 'left' ? left : 0,\n right: this.labelAlign === 'right' ?\n left + this.width :\n chart.chartWidth\n };\n }\n // left edge\n if (crossLabel.translateX < limit.left) {\n offset = limit.left - crossLabel.translateX;\n }\n // right edge\n if (crossLabel.translateX + crossBox.width >= limit.right) {\n offset = -(crossLabel.translateX + crossBox.width - limit.right);\n }\n // show the crosslabel\n crossLabel.attr({\n x: posx + offset,\n y: posy,\n // First set x and y, then anchorX and anchorY, when box is actually\n // calculated, #5702\n anchorX: horiz ?\n posx :\n (this.opposite ? 0 : chart.chartWidth),\n anchorY: horiz ?\n (this.opposite ? chart.chartHeight : 0) :\n posy + crossBox.height / 2\n });\n });\n /**\n * Based on the data grouping options decides whether\n * the data should be cropped while processing.\n *\n * @ignore\n * @function Highcharts.Series#forceCropping\n */\n Series.prototype.forceCropping = function () {\n var chart = this.chart,\n options = this.options,\n dataGroupingOptions = options.dataGrouping,\n groupingEnabled = this.allowDG !== false && dataGroupingOptions &&\n pick(dataGroupingOptions.enabled,\n chart.options.isStock);\n return groupingEnabled;\n };\n addEvent(Chart, 'update', function (e) {\n var options = e.options;\n // Use case: enabling scrollbar from a disabled state.\n // Scrollbar needs to be initialized from a controller, Navigator in this\n // case (#6615)\n if ('scrollbar' in options && this.navigator) {\n merge(true, this.options.scrollbar, options.scrollbar);\n this.navigator.update({});\n delete options.scrollbar;\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return StockChart;\n });\n _registerModule(_modules, 'masters/modules/stock.src.js', [_modules['Core/Globals.js'], _modules['Series/DataModifyComposition.js'], _modules['Stock/Navigator/Navigator.js'], _modules['Stock/RangeSelector/RangeSelector.js'], _modules['Stock/Scrollbar/Scrollbar.js'], _modules['Core/Axis/OrdinalAxis.js'], _modules['Series/OHLC/OHLCSeries.js'], _modules['Series/Flags/FlagsSeries.js'], _modules['Core/Chart/StockChart.js']], function (Highcharts, DataModifyComposition, Navigator, RangeSelector, Scrollbar, OrdinalAxis, OHLCSeries, FlagsSeries, StockChart) {\n\n var G = Highcharts;\n // Classes\n G.Navigator = Navigator;\n G.RangeSelector = RangeSelector;\n G.Scrollbar = Scrollbar;\n G.StockChart = G.stockChart = StockChart.stockChart;\n // Compositions\n DataModifyComposition.compose(G.Series, G.Axis, G.Point);\n FlagsSeries.compose(G.Renderer);\n Navigator.compose(G.Axis, G.Chart, G.Series);\n OHLCSeries.compose(G.Series);\n OrdinalAxis.compose(G.Axis, G.Series, G.Chart);\n RangeSelector.compose(G.Axis, G.Chart);\n Scrollbar.compose(G.Axis);\n\n });\n _registerModule(_modules, 'masters/highstock.src.js', [_modules['masters/highcharts.src.js']], function (Highcharts) {\n\n Highcharts.product = 'Highstock';\n\n return Highcharts;\n });\n _modules['masters/highstock.src.js']._modules = _modules;\n return _modules['masters/highstock.src.js'];\n}));","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'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","// HumanizeDuration.js - https://git.io/j0HgmQ\n\n// @ts-check\n\n/**\n * @typedef {string | ((unitCount: number) => string)} Unit\n */\n\n/**\n * @typedef {(\"y\" | \"mo\" | \"w\" | \"d\" | \"h\" | \"m\" | \"s\" | \"ms\")} UnitName\n */\n\n/**\n * @typedef {Object} UnitMeasures\n * @prop {number} y\n * @prop {number} mo\n * @prop {number} w\n * @prop {number} d\n * @prop {number} h\n * @prop {number} m\n * @prop {number} s\n * @prop {number} ms\n */\n\n/**\n * @typedef {Record<\"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\", string>} DigitReplacements\n */\n\n/**\n * @typedef {Object} Language\n * @prop {Unit} y\n * @prop {Unit} mo\n * @prop {Unit} w\n * @prop {Unit} d\n * @prop {Unit} h\n * @prop {Unit} m\n * @prop {Unit} s\n * @prop {Unit} ms\n * @prop {string} [decimal]\n * @prop {string} [delimiter]\n * @prop {DigitReplacements} [_digitReplacements]\n * @prop {boolean} [_numberFirst]\n */\n\n/**\n * @typedef {Object} Options\n * @prop {string} [language]\n * @prop {Record} [languages]\n * @prop {string[]} [fallbacks]\n * @prop {string} [delimiter]\n * @prop {string} [spacer]\n * @prop {boolean} [round]\n * @prop {number} [largest]\n * @prop {UnitName[]} [units]\n * @prop {string} [decimal]\n * @prop {string} [conjunction]\n * @prop {number} [maxDecimalPoints]\n * @prop {UnitMeasures} [unitMeasures]\n * @prop {boolean} [serialComma]\n * @prop {DigitReplacements} [digitReplacements]\n */\n\n/**\n * @typedef {Required} NormalizedOptions\n */\n\n(function () {\n // This has to be defined separately because of a bug: we want to alias\n // `gr` and `el` for backwards-compatiblity. In a breaking change, we can\n // remove `gr` entirely.\n // See https://github.com/EvanHahn/HumanizeDuration.js/issues/143 for more.\n var GREEK = language(\n function (c) {\n return c === 1 ? \"χρόνος\" : \"χρόνια\";\n },\n function (c) {\n return c === 1 ? \"μήνας\" : \"μήνες\";\n },\n function (c) {\n return c === 1 ? \"εβδομάδα\" : \"εβδομάδες\";\n },\n function (c) {\n return c === 1 ? \"μέρα\" : \"μέρες\";\n },\n function (c) {\n return c === 1 ? \"ώρα\" : \"ώρες\";\n },\n function (c) {\n return c === 1 ? \"λεπτό\" : \"λεπτά\";\n },\n function (c) {\n return c === 1 ? \"δευτερόλεπτο\" : \"δευτερόλεπτα\";\n },\n function (c) {\n return (c === 1 ? \"χιλιοστό\" : \"χιλιοστά\") + \" του δευτερολέπτου\";\n },\n \",\"\n );\n\n /** @type {Record} */\n var LANGUAGES = {\n af: language(\n \"jaar\",\n function (c) {\n return \"maand\" + (c === 1 ? \"\" : \"e\");\n },\n function (c) {\n return c === 1 ? \"week\" : \"weke\";\n },\n function (c) {\n return c === 1 ? \"dag\" : \"dae\";\n },\n function (c) {\n return c === 1 ? \"uur\" : \"ure\";\n },\n function (c) {\n return c === 1 ? \"minuut\" : \"minute\";\n },\n function (c) {\n return \"sekonde\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"millisekonde\" + (c === 1 ? \"\" : \"s\");\n },\n \",\"\n ),\n ar: assign(\n language(\n function (c) {\n return [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(c)];\n },\n function (c) {\n return [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(c)];\n },\n function (c) {\n return [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(c)];\n },\n function (c) {\n return [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(c)];\n },\n function (c) {\n return [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(c)];\n },\n function (c) {\n return [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(c)];\n },\n function (c) {\n return [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(c)];\n },\n function (c) {\n return [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][\n getArabicForm(c)\n ];\n },\n \",\"\n ),\n {\n delimiter: \" ﻭ \",\n _digitReplacements: [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"]\n }\n ),\n bg: language(\n function (c) {\n return [\"години\", \"година\", \"години\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"дни\", \"ден\", \"дни\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"часа\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"минути\", \"минута\", \"минути\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(c)];\n },\n \",\"\n ),\n bn: language(\n \"বছর\",\n \"মাস\",\n \"সপ্তাহ\",\n \"দিন\",\n \"ঘন্টা\",\n \"মিনিট\",\n \"সেকেন্ড\",\n \"মিলিসেকেন্ড\"\n ),\n ca: language(\n function (c) {\n return \"any\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"os\");\n },\n function (c) {\n return \"setman\" + (c === 1 ? \"a\" : \"es\");\n },\n function (c) {\n return \"di\" + (c === 1 ? \"a\" : \"es\");\n },\n function (c) {\n return \"hor\" + (c === 1 ? \"a\" : \"es\");\n },\n function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"segon\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"milisegon\" + (c === 1 ? \"\" : \"s\");\n },\n \",\"\n ),\n ckb: language(\n \"ساڵ\",\n \"مانگ\",\n \"هەفتە\",\n \"ڕۆژ\",\n \"کاژێر\",\n \"خولەک\",\n \"چرکە\",\n \"میلی چرکە\",\n \".\"\n ),\n cs: language(\n function (c) {\n return [\"rok\", \"roku\", \"roky\", \"let\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"měsíc\", \"měsíce\", \"měsíce\", \"měsíců\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"týden\", \"týdne\", \"týdny\", \"týdnů\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"den\", \"dne\", \"dny\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodin\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n \",\"\n ),\n cy: language(\n \"flwyddyn\",\n \"mis\",\n \"wythnos\",\n \"diwrnod\",\n \"awr\",\n \"munud\",\n \"eiliad\",\n \"milieiliad\"\n ),\n da: language(\n \"år\",\n function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"uge\" + (c === 1 ? \"\" : \"r\");\n },\n function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"e\");\n },\n function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"ter\");\n },\n function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n \",\"\n ),\n de: language(\n function (c) {\n return \"Jahr\" + (c === 1 ? \"\" : \"e\");\n },\n function (c) {\n return \"Monat\" + (c === 1 ? \"\" : \"e\");\n },\n function (c) {\n return \"Woche\" + (c === 1 ? \"\" : \"n\");\n },\n function (c) {\n return \"Tag\" + (c === 1 ? \"\" : \"e\");\n },\n function (c) {\n return \"Stunde\" + (c === 1 ? \"\" : \"n\");\n },\n function (c) {\n return \"Minute\" + (c === 1 ? \"\" : \"n\");\n },\n function (c) {\n return \"Sekunde\" + (c === 1 ? \"\" : \"n\");\n },\n function (c) {\n return \"Millisekunde\" + (c === 1 ? \"\" : \"n\");\n },\n \",\"\n ),\n el: GREEK,\n en: language(\n function (c) {\n return \"year\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"month\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"week\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"day\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"hour\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"minute\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"second\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"millisecond\" + (c === 1 ? \"\" : \"s\");\n }\n ),\n eo: language(\n function (c) {\n return \"jaro\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"monato\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"semajno\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"tago\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"horo\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"sekundo\" + (c === 1 ? \"\" : \"j\");\n },\n function (c) {\n return \"milisekundo\" + (c === 1 ? \"\" : \"j\");\n },\n \",\"\n ),\n es: language(\n function (c) {\n return \"año\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"es\");\n },\n function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"día\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"milisegundo\" + (c === 1 ? \"\" : \"s\");\n },\n \",\"\n ),\n et: language(\n function (c) {\n return \"aasta\" + (c === 1 ? \"\" : \"t\");\n },\n function (c) {\n return \"kuu\" + (c === 1 ? \"\" : \"d\");\n },\n function (c) {\n return \"nädal\" + (c === 1 ? \"\" : \"at\");\n },\n function (c) {\n return \"päev\" + (c === 1 ? \"\" : \"a\");\n },\n function (c) {\n return \"tund\" + (c === 1 ? \"\" : \"i\");\n },\n function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"it\");\n },\n function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"it\");\n },\n function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"it\");\n },\n \",\"\n ),\n eu: language(\n \"urte\",\n \"hilabete\",\n \"aste\",\n \"egun\",\n \"ordu\",\n \"minutu\",\n \"segundo\",\n \"milisegundo\",\n \",\"\n ),\n fa: language(\n \"سال\",\n \"ماه\",\n \"هفته\",\n \"روز\",\n \"ساعت\",\n \"دقیقه\",\n \"ثانیه\",\n \"میلی ثانیه\"\n ),\n fi: language(\n function (c) {\n return c === 1 ? \"vuosi\" : \"vuotta\";\n },\n function (c) {\n return c === 1 ? \"kuukausi\" : \"kuukautta\";\n },\n function (c) {\n return \"viikko\" + (c === 1 ? \"\" : \"a\");\n },\n function (c) {\n return \"päivä\" + (c === 1 ? \"\" : \"ä\");\n },\n function (c) {\n return \"tunti\" + (c === 1 ? \"\" : \"a\");\n },\n function (c) {\n return \"minuutti\" + (c === 1 ? \"\" : \"a\");\n },\n function (c) {\n return \"sekunti\" + (c === 1 ? \"\" : \"a\");\n },\n function (c) {\n return \"millisekunti\" + (c === 1 ? \"\" : \"a\");\n },\n \",\"\n ),\n fo: language(\n \"ár\",\n function (c) {\n return c === 1 ? \"mánaður\" : \"mánaðir\";\n },\n function (c) {\n return c === 1 ? \"vika\" : \"vikur\";\n },\n function (c) {\n return c === 1 ? \"dagur\" : \"dagar\";\n },\n function (c) {\n return c === 1 ? \"tími\" : \"tímar\";\n },\n function (c) {\n return c === 1 ? \"minuttur\" : \"minuttir\";\n },\n \"sekund\",\n \"millisekund\",\n \",\"\n ),\n fr: language(\n function (c) {\n return \"an\" + (c >= 2 ? \"s\" : \"\");\n },\n \"mois\",\n function (c) {\n return \"semaine\" + (c >= 2 ? \"s\" : \"\");\n },\n function (c) {\n return \"jour\" + (c >= 2 ? \"s\" : \"\");\n },\n function (c) {\n return \"heure\" + (c >= 2 ? \"s\" : \"\");\n },\n function (c) {\n return \"minute\" + (c >= 2 ? \"s\" : \"\");\n },\n function (c) {\n return \"seconde\" + (c >= 2 ? \"s\" : \"\");\n },\n function (c) {\n return \"milliseconde\" + (c >= 2 ? \"s\" : \"\");\n },\n \",\"\n ),\n gr: GREEK,\n he: language(\n function (c) {\n return c === 1 ? \"שנה\" : \"שנים\";\n },\n function (c) {\n return c === 1 ? \"חודש\" : \"חודשים\";\n },\n function (c) {\n return c === 1 ? \"שבוע\" : \"שבועות\";\n },\n function (c) {\n return c === 1 ? \"יום\" : \"ימים\";\n },\n function (c) {\n return c === 1 ? \"שעה\" : \"שעות\";\n },\n function (c) {\n return c === 1 ? \"דקה\" : \"דקות\";\n },\n function (c) {\n return c === 1 ? \"שניה\" : \"שניות\";\n },\n function (c) {\n return c === 1 ? \"מילישנייה\" : \"מילישניות\";\n }\n ),\n hr: language(\n function (c) {\n if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"godine\";\n }\n return \"godina\";\n },\n function (c) {\n if (c === 1) {\n return \"mjesec\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"mjeseca\";\n }\n return \"mjeseci\";\n },\n function (c) {\n if (c % 10 === 1 && c !== 11) {\n return \"tjedan\";\n }\n return \"tjedna\";\n },\n function (c) {\n return c === 1 ? \"dan\" : \"dana\";\n },\n function (c) {\n if (c === 1) {\n return \"sat\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"sata\";\n }\n return \"sati\";\n },\n function (c) {\n var mod10 = c % 10;\n if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {\n return \"minute\";\n }\n return \"minuta\";\n },\n function (c) {\n var mod10 = c % 10;\n if (mod10 === 5 || (Math.floor(c) === c && c >= 10 && c <= 19)) {\n return \"sekundi\";\n } else if (mod10 === 1) {\n return \"sekunda\";\n } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {\n return \"sekunde\";\n }\n return \"sekundi\";\n },\n function (c) {\n if (c === 1) {\n return \"milisekunda\";\n } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"milisekunde\";\n }\n return \"milisekundi\";\n },\n \",\"\n ),\n hi: language(\n \"साल\",\n function (c) {\n return c === 1 ? \"महीना\" : \"महीने\";\n },\n function (c) {\n return c === 1 ? \"हफ़्ता\" : \"हफ्ते\";\n },\n \"दिन\",\n function (c) {\n return c === 1 ? \"घंटा\" : \"घंटे\";\n },\n \"मिनट\",\n \"सेकंड\",\n \"मिलीसेकंड\"\n ),\n hu: language(\n \"év\",\n \"hónap\",\n \"hét\",\n \"nap\",\n \"óra\",\n \"perc\",\n \"másodperc\",\n \"ezredmásodperc\",\n \",\"\n ),\n id: language(\n \"tahun\",\n \"bulan\",\n \"minggu\",\n \"hari\",\n \"jam\",\n \"menit\",\n \"detik\",\n \"milidetik\"\n ),\n is: language(\n \"ár\",\n function (c) {\n return \"mánuð\" + (c === 1 ? \"ur\" : \"ir\");\n },\n function (c) {\n return \"vik\" + (c === 1 ? \"a\" : \"ur\");\n },\n function (c) {\n return \"dag\" + (c === 1 ? \"ur\" : \"ar\");\n },\n function (c) {\n return \"klukkutím\" + (c === 1 ? \"i\" : \"ar\");\n },\n function (c) {\n return \"mínút\" + (c === 1 ? \"a\" : \"ur\");\n },\n function (c) {\n return \"sekúnd\" + (c === 1 ? \"a\" : \"ur\");\n },\n function (c) {\n return \"millisekúnd\" + (c === 1 ? \"a\" : \"ur\");\n }\n ),\n it: language(\n function (c) {\n return \"ann\" + (c === 1 ? \"o\" : \"i\");\n },\n function (c) {\n return \"mes\" + (c === 1 ? \"e\" : \"i\");\n },\n function (c) {\n return \"settiman\" + (c === 1 ? \"a\" : \"e\");\n },\n function (c) {\n return \"giorn\" + (c === 1 ? \"o\" : \"i\");\n },\n function (c) {\n return \"or\" + (c === 1 ? \"a\" : \"e\");\n },\n function (c) {\n return \"minut\" + (c === 1 ? \"o\" : \"i\");\n },\n function (c) {\n return \"second\" + (c === 1 ? \"o\" : \"i\");\n },\n function (c) {\n return \"millisecond\" + (c === 1 ? \"o\" : \"i\");\n },\n \",\"\n ),\n ja: language(\"年\", \"ヶ月\", \"週\", \"日\", \"時間\", \"分\", \"秒\", \"ミリ秒\"),\n km: language(\n \"ឆ្នាំ\",\n \"ខែ\",\n \"សប្តាហ៍\",\n \"ថ្ងៃ\",\n \"ម៉ោង\",\n \"នាទី\",\n \"វិនាទី\",\n \"មិល្លីវិនាទី\"\n ),\n kn: language(\n function (c) {\n return c === 1 ? \"ವರ್ಷ\" : \"ವರ್ಷಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ತಿಂಗಳು\" : \"ತಿಂಗಳುಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ವಾರ\" : \"ವಾರಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ದಿನ\" : \"ದಿನಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ಗಂಟೆ\" : \"ಗಂಟೆಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ನಿಮಿಷ\" : \"ನಿಮಿಷಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ಸೆಕೆಂಡ್\" : \"ಸೆಕೆಂಡುಗಳು\";\n },\n function (c) {\n return c === 1 ? \"ಮಿಲಿಸೆಕೆಂಡ್\" : \"ಮಿಲಿಸೆಕೆಂಡುಗಳು\";\n }\n ),\n ko: language(\"년\", \"개월\", \"주일\", \"일\", \"시간\", \"분\", \"초\", \"밀리 초\"),\n ku: language(\n \"sal\",\n \"meh\",\n \"hefte\",\n \"roj\",\n \"seet\",\n \"deqe\",\n \"saniye\",\n \"mîlîçirk\",\n \",\"\n ),\n lo: language(\n \"ປີ\",\n \"ເດືອນ\",\n \"ອາທິດ\",\n \"ມື້\",\n \"ຊົ່ວໂມງ\",\n \"ນາທີ\",\n \"ວິນາທີ\",\n \"ມິນລິວິນາທີ\",\n \",\"\n ),\n lt: language(\n function (c) {\n return c % 10 === 0 || (c % 100 >= 10 && c % 100 <= 20)\n ? \"metų\"\n : \"metai\";\n },\n function (c) {\n return [\"mėnuo\", \"mėnesiai\", \"mėnesių\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"savaitė\", \"savaitės\", \"savaičių\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"diena\", \"dienos\", \"dienų\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"valanda\", \"valandos\", \"valandų\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"minutė\", \"minutės\", \"minučių\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"sekundė\", \"sekundės\", \"sekundžių\"][getLithuanianForm(c)];\n },\n function (c) {\n return [\"milisekundė\", \"milisekundės\", \"milisekundžių\"][\n getLithuanianForm(c)\n ];\n },\n \",\"\n ),\n lv: language(\n function (c) {\n return getLatvianForm(c) ? \"gads\" : \"gadi\";\n },\n function (c) {\n return getLatvianForm(c) ? \"mēnesis\" : \"mēneši\";\n },\n function (c) {\n return getLatvianForm(c) ? \"nedēļa\" : \"nedēļas\";\n },\n function (c) {\n return getLatvianForm(c) ? \"diena\" : \"dienas\";\n },\n function (c) {\n return getLatvianForm(c) ? \"stunda\" : \"stundas\";\n },\n function (c) {\n return getLatvianForm(c) ? \"minūte\" : \"minūtes\";\n },\n function (c) {\n return getLatvianForm(c) ? \"sekunde\" : \"sekundes\";\n },\n function (c) {\n return getLatvianForm(c) ? \"milisekunde\" : \"milisekundes\";\n },\n \",\"\n ),\n mk: language(\n function (c) {\n return c === 1 ? \"година\" : \"години\";\n },\n function (c) {\n return c === 1 ? \"месец\" : \"месеци\";\n },\n function (c) {\n return c === 1 ? \"недела\" : \"недели\";\n },\n function (c) {\n return c === 1 ? \"ден\" : \"дена\";\n },\n function (c) {\n return c === 1 ? \"час\" : \"часа\";\n },\n function (c) {\n return c === 1 ? \"минута\" : \"минути\";\n },\n function (c) {\n return c === 1 ? \"секунда\" : \"секунди\";\n },\n function (c) {\n return c === 1 ? \"милисекунда\" : \"милисекунди\";\n },\n \",\"\n ),\n mn: language(\n \"жил\",\n \"сар\",\n \"долоо хоног\",\n \"өдөр\",\n \"цаг\",\n \"минут\",\n \"секунд\",\n \"миллисекунд\"\n ),\n mr: language(\n function (c) {\n return c === 1 ? \"वर्ष\" : \"वर्षे\";\n },\n function (c) {\n return c === 1 ? \"महिना\" : \"महिने\";\n },\n function (c) {\n return c === 1 ? \"आठवडा\" : \"आठवडे\";\n },\n \"दिवस\",\n \"तास\",\n function (c) {\n return c === 1 ? \"मिनिट\" : \"मिनिटे\";\n },\n \"सेकंद\",\n \"मिलिसेकंद\"\n ),\n ms: language(\n \"tahun\",\n \"bulan\",\n \"minggu\",\n \"hari\",\n \"jam\",\n \"minit\",\n \"saat\",\n \"milisaat\"\n ),\n nl: language(\n \"jaar\",\n function (c) {\n return c === 1 ? \"maand\" : \"maanden\";\n },\n function (c) {\n return c === 1 ? \"week\" : \"weken\";\n },\n function (c) {\n return c === 1 ? \"dag\" : \"dagen\";\n },\n \"uur\",\n function (c) {\n return c === 1 ? \"minuut\" : \"minuten\";\n },\n function (c) {\n return c === 1 ? \"seconde\" : \"seconden\";\n },\n function (c) {\n return c === 1 ? \"milliseconde\" : \"milliseconden\";\n },\n \",\"\n ),\n no: language(\n \"år\",\n function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"uke\" + (c === 1 ? \"\" : \"r\");\n },\n function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n function (c) {\n return \"minutt\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n \",\"\n ),\n pl: language(\n function (c) {\n return [\"rok\", \"roku\", \"lata\", \"lat\"][getPolishForm(c)];\n },\n function (c) {\n return [\"miesiąc\", \"miesiąca\", \"miesiące\", \"miesięcy\"][\n getPolishForm(c)\n ];\n },\n function (c) {\n return [\"tydzień\", \"tygodnia\", \"tygodnie\", \"tygodni\"][getPolishForm(c)];\n },\n function (c) {\n return [\"dzień\", \"dnia\", \"dni\", \"dni\"][getPolishForm(c)];\n },\n function (c) {\n return [\"godzina\", \"godziny\", \"godziny\", \"godzin\"][getPolishForm(c)];\n },\n function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getPolishForm(c)];\n },\n function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][getPolishForm(c)];\n },\n function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getPolishForm(c)\n ];\n },\n \",\"\n ),\n pt: language(\n function (c) {\n return \"ano\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return c === 1 ? \"mês\" : \"meses\";\n },\n function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"dia\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n function (c) {\n return \"milissegundo\" + (c === 1 ? \"\" : \"s\");\n },\n \",\"\n ),\n ro: language(\n function (c) {\n return c === 1 ? \"an\" : \"ani\";\n },\n function (c) {\n return c === 1 ? \"lună\" : \"luni\";\n },\n function (c) {\n return c === 1 ? \"săptămână\" : \"săptămâni\";\n },\n function (c) {\n return c === 1 ? \"zi\" : \"zile\";\n },\n function (c) {\n return c === 1 ? \"oră\" : \"ore\";\n },\n function (c) {\n return c === 1 ? \"minut\" : \"minute\";\n },\n function (c) {\n return c === 1 ? \"secundă\" : \"secunde\";\n },\n function (c) {\n return c === 1 ? \"milisecundă\" : \"milisecunde\";\n },\n \",\"\n ),\n ru: language(\n function (c) {\n return [\"лет\", \"год\", \"года\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"месяцев\", \"месяц\", \"месяца\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"недель\", \"неделя\", \"недели\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"дней\", \"день\", \"дня\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"часов\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"минут\", \"минута\", \"минуты\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"секунд\", \"секунда\", \"секунды\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"миллисекунд\", \"миллисекунда\", \"миллисекунды\"][\n getSlavicForm(c)\n ];\n },\n \",\"\n ),\n sq: language(\n function (c) {\n return c === 1 ? \"vit\" : \"vjet\";\n },\n \"muaj\",\n \"javë\",\n \"ditë\",\n \"orë\",\n function (c) {\n return \"minut\" + (c === 1 ? \"ë\" : \"a\");\n },\n function (c) {\n return \"sekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n function (c) {\n return \"milisekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n \",\"\n ),\n sr: language(\n function (c) {\n return [\"години\", \"година\", \"године\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"месеци\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"недељи\", \"недеља\", \"недеље\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"дани\", \"дан\", \"дана\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"сати\", \"сат\", \"сата\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"минута\", \"минут\", \"минута\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"секунди\", \"секунда\", \"секунде\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунде\"][getSlavicForm(c)];\n },\n \",\"\n ),\n ta: language(\n function (c) {\n return c === 1 ? \"வருடம்\" : \"ஆண்டுகள்\";\n },\n function (c) {\n return c === 1 ? \"மாதம்\" : \"மாதங்கள்\";\n },\n function (c) {\n return c === 1 ? \"வாரம்\" : \"வாரங்கள்\";\n },\n function (c) {\n return c === 1 ? \"நாள்\" : \"நாட்கள்\";\n },\n function (c) {\n return c === 1 ? \"மணி\" : \"மணிநேரம்\";\n },\n function (c) {\n return \"நிமிட\" + (c === 1 ? \"ம்\" : \"ங்கள்\");\n },\n function (c) {\n return \"வினாடி\" + (c === 1 ? \"\" : \"கள்\");\n },\n function (c) {\n return \"மில்லி விநாடி\" + (c === 1 ? \"\" : \"கள்\");\n }\n ),\n te: language(\n function (c) {\n return \"సంవత్స\" + (c === 1 ? \"రం\" : \"రాల\");\n },\n function (c) {\n return \"నెల\" + (c === 1 ? \"\" : \"ల\");\n },\n function (c) {\n return c === 1 ? \"వారం\" : \"వారాలు\";\n },\n function (c) {\n return \"రోజు\" + (c === 1 ? \"\" : \"లు\");\n },\n function (c) {\n return \"గంట\" + (c === 1 ? \"\" : \"లు\");\n },\n function (c) {\n return c === 1 ? \"నిమిషం\" : \"నిమిషాలు\";\n },\n function (c) {\n return c === 1 ? \"సెకను\" : \"సెకన్లు\";\n },\n function (c) {\n return c === 1 ? \"మిల్లీసెకన్\" : \"మిల్లీసెకన్లు\";\n }\n ),\n uk: language(\n function (c) {\n return [\"років\", \"рік\", \"роки\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"місяців\", \"місяць\", \"місяці\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"тижнів\", \"тиждень\", \"тижні\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"днів\", \"день\", \"дні\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"годин\", \"година\", \"години\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"хвилин\", \"хвилина\", \"хвилини\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"секунд\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n function (c) {\n return [\"мілісекунд\", \"мілісекунда\", \"мілісекунди\"][getSlavicForm(c)];\n },\n \",\"\n ),\n ur: language(\n \"سال\",\n function (c) {\n return c === 1 ? \"مہینہ\" : \"مہینے\";\n },\n function (c) {\n return c === 1 ? \"ہفتہ\" : \"ہفتے\";\n },\n \"دن\",\n function (c) {\n return c === 1 ? \"گھنٹہ\" : \"گھنٹے\";\n },\n \"منٹ\",\n \"سیکنڈ\",\n \"ملی سیکنڈ\"\n ),\n sk: language(\n function (c) {\n return [\"rok\", \"roky\", \"roky\", \"rokov\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"mesiac\", \"mesiace\", \"mesiace\", \"mesiacov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n function (c) {\n return [\"týždeň\", \"týždne\", \"týždne\", \"týždňov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n function (c) {\n return [\"deň\", \"dni\", \"dni\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodín\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"minúta\", \"minúty\", \"minúty\", \"minút\"][getCzechOrSlovakForm(c)];\n },\n function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n \",\"\n ),\n sl: language(\n function (c) {\n if (c % 10 === 1) {\n return \"leto\";\n } else if (c % 100 === 2) {\n return \"leti\";\n } else if (\n c % 100 === 3 ||\n c % 100 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 5)\n ) {\n return \"leta\";\n } else {\n return \"let\";\n }\n },\n function (c) {\n if (c % 10 === 1) {\n return \"mesec\";\n } else if (c % 100 === 2 || (Math.floor(c) !== c && c % 100 <= 5)) {\n return \"meseca\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"mesece\";\n } else {\n return \"mesecev\";\n }\n },\n function (c) {\n if (c % 10 === 1) {\n return \"teden\";\n } else if (c % 10 === 2 || (Math.floor(c) !== c && c % 100 <= 4)) {\n return \"tedna\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"tedne\";\n } else {\n return \"tednov\";\n }\n },\n function (c) {\n return c % 100 === 1 ? \"dan\" : \"dni\";\n },\n function (c) {\n if (c % 10 === 1) {\n return \"ura\";\n } else if (c % 100 === 2) {\n return \"uri\";\n } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {\n return \"ure\";\n } else {\n return \"ur\";\n }\n },\n function (c) {\n if (c % 10 === 1) {\n return \"minuta\";\n } else if (c % 10 === 2) {\n return \"minuti\";\n } else if (\n c % 10 === 3 ||\n c % 10 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 4)\n ) {\n return \"minute\";\n } else {\n return \"minut\";\n }\n },\n function (c) {\n if (c % 10 === 1) {\n return \"sekunda\";\n } else if (c % 100 === 2) {\n return \"sekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"sekunde\";\n } else {\n return \"sekund\";\n }\n },\n function (c) {\n if (c % 10 === 1) {\n return \"milisekunda\";\n } else if (c % 100 === 2) {\n return \"milisekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"milisekunde\";\n } else {\n return \"milisekund\";\n }\n },\n \",\"\n ),\n sv: language(\n \"år\",\n function (c) {\n return \"månad\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"veck\" + (c === 1 ? \"a\" : \"or\");\n },\n function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"ar\");\n },\n function (c) {\n return \"timm\" + (c === 1 ? \"e\" : \"ar\");\n },\n function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n \",\"\n ),\n sw: assign(\n language(\n function (c) {\n return c === 1 ? \"mwaka\" : \"miaka\";\n },\n function (c) {\n return c === 1 ? \"mwezi\" : \"miezi\";\n },\n \"wiki\",\n function (c) {\n return c === 1 ? \"siku\" : \"masiku\";\n },\n function (c) {\n return c === 1 ? \"saa\" : \"masaa\";\n },\n \"dakika\",\n \"sekunde\",\n \"milisekunde\"\n ),\n { _numberFirst: true }\n ),\n tr: language(\n \"yıl\",\n \"ay\",\n \"hafta\",\n \"gün\",\n \"saat\",\n \"dakika\",\n \"saniye\",\n \"milisaniye\",\n \",\"\n ),\n th: language(\n \"ปี\",\n \"เดือน\",\n \"สัปดาห์\",\n \"วัน\",\n \"ชั่วโมง\",\n \"นาที\",\n \"วินาที\",\n \"มิลลิวินาที\"\n ),\n uz: language(\n \"yil\",\n \"oy\",\n \"hafta\",\n \"kun\",\n \"soat\",\n \"minut\",\n \"sekund\",\n \"millisekund\"\n ),\n uz_CYR: language(\n \"йил\",\n \"ой\",\n \"ҳафта\",\n \"кун\",\n \"соат\",\n \"минут\",\n \"секунд\",\n \"миллисекунд\"\n ),\n vi: language(\n \"năm\",\n \"tháng\",\n \"tuần\",\n \"ngày\",\n \"giờ\",\n \"phút\",\n \"giây\",\n \"mili giây\",\n \",\"\n ),\n zh_CN: language(\"年\", \"个月\", \"周\", \"天\", \"小时\", \"分钟\", \"秒\", \"毫秒\"),\n zh_TW: language(\"年\", \"個月\", \"周\", \"天\", \"小時\", \"分鐘\", \"秒\", \"毫秒\")\n };\n\n /**\n * Helper function for creating language definitions.\n *\n * @param {Unit} y\n * @param {Unit} mo\n * @param {Unit} w\n * @param {Unit} d\n * @param {Unit} h\n * @param {Unit} m\n * @param {Unit} s\n * @param {Unit} ms\n * @param {string} [decimal]\n * @returns {Language}\n */\n function language(y, mo, w, d, h, m, s, ms, decimal) {\n /** @type {Language} */\n var result = { y: y, mo: mo, w: w, d: d, h: h, m: m, s: s, ms: ms };\n if (typeof decimal !== \"undefined\") {\n result.decimal = decimal;\n }\n return result;\n }\n\n /**\n * Helper function for Arabic.\n *\n * @param {number} c\n * @returns {0 | 1 | 2}\n */\n function getArabicForm(c) {\n if (c === 2) {\n return 1;\n }\n if (c > 2 && c < 11) {\n return 2;\n }\n return 0;\n }\n\n /**\n * Helper function for Polish.\n *\n * @param {number} c\n * @returns {0 | 1 | 2 | 3}\n */\n function getPolishForm(c) {\n if (c === 1) {\n return 0;\n }\n if (Math.floor(c) !== c) {\n return 1;\n }\n if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {\n return 2;\n }\n return 3;\n }\n\n /**\n * Helper function for Slavic languages.\n *\n * @param {number} c\n * @returns {0 | 1 | 2 | 3}\n */\n function getSlavicForm(c) {\n if (Math.floor(c) !== c) {\n return 2;\n }\n if (\n (c % 100 >= 5 && c % 100 <= 20) ||\n (c % 10 >= 5 && c % 10 <= 9) ||\n c % 10 === 0\n ) {\n return 0;\n }\n if (c % 10 === 1) {\n return 1;\n }\n if (c > 1) {\n return 2;\n }\n return 0;\n }\n\n /**\n * Helper function for Czech or Slovak.\n *\n * @param {number} c\n * @returns {0 | 1 | 2 | 3}\n */\n function getCzechOrSlovakForm(c) {\n if (c === 1) {\n return 0;\n }\n if (Math.floor(c) !== c) {\n return 1;\n }\n if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {\n return 2;\n }\n return 3;\n }\n\n /**\n * Helper function for Lithuanian.\n *\n * @param {number} c\n * @returns {0 | 1 | 2}\n */\n function getLithuanianForm(c) {\n if (c === 1 || (c % 10 === 1 && c % 100 > 20)) {\n return 0;\n }\n if (\n Math.floor(c) !== c ||\n (c % 10 >= 2 && c % 100 > 20) ||\n (c % 10 >= 2 && c % 100 < 10)\n ) {\n return 1;\n }\n return 2;\n }\n\n /**\n * Helper function for Latvian.\n *\n * @param {number} c\n * @returns {boolean}\n */\n function getLatvianForm(c) {\n return c % 10 === 1 && c % 100 !== 11;\n }\n\n function assign(destination) {\n var source;\n for (var i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (var prop in source) {\n if (has(source, prop)) {\n destination[prop] = source[prop];\n }\n }\n }\n return destination;\n }\n\n // We need to make sure we support browsers that don't have\n // `Array.isArray`, so we define a fallback here.\n var isArray =\n Array.isArray ||\n function (arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n\n function has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n /**\n * @param {Pick, \"language\" | \"fallbacks\" | \"languages\">} options\n * @throws {Error} Throws an error if language is not found.\n * @returns {Language}\n */\n function getLanguage(options) {\n var possibleLanguages = [options.language];\n\n if (has(options, \"fallbacks\")) {\n if (isArray(options.fallbacks) && options.fallbacks.length) {\n possibleLanguages = possibleLanguages.concat(options.fallbacks);\n } else {\n throw new Error(\"fallbacks must be an array with at least one element\");\n }\n }\n\n for (var i = 0; i < possibleLanguages.length; i++) {\n var languageToTry = possibleLanguages[i];\n if (has(options.languages, languageToTry)) {\n return options.languages[languageToTry];\n }\n if (has(LANGUAGES, languageToTry)) {\n return LANGUAGES[languageToTry];\n }\n }\n\n throw new Error(\"No language found.\");\n }\n\n /**\n * @param {Piece} piece\n * @param {Language} language\n * @param {Pick, \"decimal\" | \"spacer\" | \"maxDecimalPoints\" | \"digitReplacements\">} options\n */\n function renderPiece(piece, language, options) {\n var unitName = piece.unitName;\n var unitCount = piece.unitCount;\n\n var spacer = options.spacer;\n var maxDecimalPoints = options.maxDecimalPoints;\n\n /** @type {string} */\n var decimal;\n if (has(options, \"decimal\")) {\n decimal = options.decimal;\n } else if (has(language, \"decimal\")) {\n decimal = language.decimal;\n } else {\n decimal = \".\";\n }\n\n /** @type {undefined | DigitReplacements} */\n var digitReplacements;\n if (\"digitReplacements\" in options) {\n digitReplacements = options.digitReplacements;\n } else if (\"_digitReplacements\" in language) {\n digitReplacements = language._digitReplacements;\n }\n\n /** @type {string} */\n var formattedCount;\n var normalizedUnitCount =\n maxDecimalPoints === void 0\n ? unitCount\n : Math.floor(unitCount * Math.pow(10, maxDecimalPoints)) /\n Math.pow(10, maxDecimalPoints);\n var countStr = normalizedUnitCount.toString();\n if (digitReplacements) {\n formattedCount = \"\";\n for (var i = 0; i < countStr.length; i++) {\n var char = countStr[i];\n if (char === \".\") {\n formattedCount += decimal;\n } else {\n formattedCount += digitReplacements[char];\n }\n }\n } else {\n formattedCount = countStr.replace(\".\", decimal);\n }\n\n var languageWord = language[unitName];\n var word;\n if (typeof languageWord === \"function\") {\n word = languageWord(unitCount);\n } else {\n word = languageWord;\n }\n\n if (language._numberFirst) {\n return word + spacer + formattedCount;\n }\n return formattedCount + spacer + word;\n }\n\n /**\n * @typedef {Object} Piece\n * @prop {UnitName} unitName\n * @prop {number} unitCount\n */\n\n /**\n * @param {number} ms\n * @param {Pick, \"units\" | \"unitMeasures\" | \"largest\" | \"round\">} options\n * @returns {Piece[]}\n */\n function getPieces(ms, options) {\n /** @type {UnitName} */\n var unitName;\n\n /** @type {number} */\n var i;\n\n /** @type {number} */\n var unitCount;\n\n /** @type {number} */\n var msRemaining;\n\n var units = options.units;\n var unitMeasures = options.unitMeasures;\n var largest = \"largest\" in options ? options.largest : Infinity;\n\n if (!units.length) return [];\n\n // Get the counts for each unit. Doesn't round or truncate anything.\n // For example, might create an object like `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`.\n /** @type {Partial>} */\n var unitCounts = {};\n msRemaining = ms;\n for (i = 0; i < units.length; i++) {\n unitName = units[i];\n var unitMs = unitMeasures[unitName];\n\n var isLast = i === units.length - 1;\n unitCount = isLast\n ? msRemaining / unitMs\n : Math.floor(msRemaining / unitMs);\n unitCounts[unitName] = unitCount;\n\n msRemaining -= unitCount * unitMs;\n }\n\n if (options.round) {\n // Update counts based on the `largest` option.\n // For example, if `largest === 2` and `unitCount` is `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`,\n // updates to something like `{ y: 7, m: 6.2 }`.\n var unitsRemainingBeforeRound = largest;\n for (i = 0; i < units.length; i++) {\n unitName = units[i];\n unitCount = unitCounts[unitName];\n\n if (unitCount === 0) continue;\n\n unitsRemainingBeforeRound--;\n\n // \"Take\" the rest of the units into this one.\n if (unitsRemainingBeforeRound === 0) {\n for (var j = i + 1; j < units.length; j++) {\n var smallerUnitName = units[j];\n var smallerUnitCount = unitCounts[smallerUnitName];\n unitCounts[unitName] +=\n (smallerUnitCount * unitMeasures[smallerUnitName]) /\n unitMeasures[unitName];\n unitCounts[smallerUnitName] = 0;\n }\n break;\n }\n }\n\n // Round the last piece (which should be the only non-integer).\n //\n // This can be a little tricky if the last piece \"bubbles up\" to a larger\n // unit. For example, \"3 days, 23.99 hours\" should be rounded to \"4 days\".\n // It can also require multiple passes. For example, \"6 days, 23.99 hours\"\n // should become \"1 week\".\n for (i = units.length - 1; i >= 0; i--) {\n unitName = units[i];\n unitCount = unitCounts[unitName];\n\n if (unitCount === 0) continue;\n\n var rounded = Math.round(unitCount);\n unitCounts[unitName] = rounded;\n\n if (i === 0) break;\n\n var previousUnitName = units[i - 1];\n var previousUnitMs = unitMeasures[previousUnitName];\n var amountOfPreviousUnit = Math.floor(\n (rounded * unitMeasures[unitName]) / previousUnitMs\n );\n if (amountOfPreviousUnit) {\n unitCounts[previousUnitName] += amountOfPreviousUnit;\n unitCounts[unitName] = 0;\n } else {\n break;\n }\n }\n }\n\n /** @type {Piece[]} */\n var result = [];\n for (i = 0; i < units.length && result.length < largest; i++) {\n unitName = units[i];\n unitCount = unitCounts[unitName];\n if (unitCount) {\n result.push({ unitName: unitName, unitCount: unitCount });\n }\n }\n return result;\n }\n\n /**\n * @param {Piece[]} pieces\n * @param {Pick, \"units\" | \"language\" | \"languages\" | \"fallbacks\" | \"delimiter\" | \"spacer\" | \"decimal\" | \"conjunction\" | \"maxDecimalPoints\" | \"serialComma\" | \"digitReplacements\">} options\n * @returns {string}\n */\n function formatPieces(pieces, options) {\n var language = getLanguage(options);\n\n if (!pieces.length) {\n var units = options.units;\n var smallestUnitName = units[units.length - 1];\n return renderPiece(\n { unitName: smallestUnitName, unitCount: 0 },\n language,\n options\n );\n }\n\n var conjunction = options.conjunction;\n var serialComma = options.serialComma;\n\n var delimiter;\n if (has(options, \"delimiter\")) {\n delimiter = options.delimiter;\n } else if (has(language, \"delimiter\")) {\n delimiter = language.delimiter;\n } else {\n delimiter = \", \";\n }\n\n /** @type {string[]} */\n var renderedPieces = [];\n for (var i = 0; i < pieces.length; i++) {\n renderedPieces.push(renderPiece(pieces[i], language, options));\n }\n\n if (!conjunction || pieces.length === 1) {\n return renderedPieces.join(delimiter);\n }\n\n if (pieces.length === 2) {\n return renderedPieces.join(conjunction);\n }\n\n return (\n renderedPieces.slice(0, -1).join(delimiter) +\n (serialComma ? \",\" : \"\") +\n conjunction +\n renderedPieces.slice(-1)\n );\n }\n\n /**\n * Create a humanizer, which lets you change the default options.\n */\n function humanizer(passedOptions) {\n var result = function humanizer(ms, humanizerOptions) {\n // Make sure we have a positive number.\n //\n // Has the nice side-effect of converting things to numbers. For example,\n // converts `\"123\"` and `Number(123)` to `123`.\n ms = Math.abs(ms);\n\n var options = assign({}, result, humanizerOptions || {});\n\n var pieces = getPieces(ms, options);\n\n return formatPieces(pieces, options);\n };\n\n return assign(\n result,\n {\n language: \"en\",\n spacer: \" \",\n conjunction: \"\",\n serialComma: true,\n units: [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\"],\n languages: {},\n round: false,\n unitMeasures: {\n y: 31557600000,\n mo: 2629800000,\n w: 604800000,\n d: 86400000,\n h: 3600000,\n m: 60000,\n s: 1000,\n ms: 1\n }\n },\n passedOptions\n );\n }\n\n /**\n * Humanize a duration.\n *\n * This is a wrapper around the default humanizer.\n */\n var humanizeDuration = humanizer({});\n\n humanizeDuration.getSupportedLanguages = function getSupportedLanguages() {\n var result = [];\n for (var language in LANGUAGES) {\n if (has(LANGUAGES, language) && language !== \"gr\") {\n result.push(language);\n }\n }\n return result;\n };\n\n humanizeDuration.humanizer = humanizer;\n\n // @ts-ignore\n if (typeof define === \"function\" && define.amd) {\n // @ts-ignore\n define(function () {\n return humanizeDuration;\n });\n } else if (typeof module !== \"undefined\" && module.exports) {\n module.exports = humanizeDuration;\n } else {\n this.humanizeDuration = humanizeDuration;\n }\n})();\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","Prism.languages.c = Prism.languages.extend('clike', {\n\t'comment': {\n\t\tpattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\tgreedy: true\n\t},\n\t'string': {\n\t\t// https://en.cppreference.com/w/c/language/string_literal\n\t\tpattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n\t\tlookbehind: true\n\t},\n\t'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n\t'function': /\\b[a-z_]\\w*(?=\\s*\\()/i,\n\t'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n\t'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'char': {\n\t\t// https://en.cppreference.com/w/c/language/character_constant\n\t\tpattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t'string': [\n\t\t\t\t{\n\t\t\t\t\t// highlight the path of the include statement as a string\n\t\t\t\t\tpattern: /^(#\\s*include\\s*)<[^>]+>/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\tPrism.languages.c['string']\n\t\t\t],\n\t\t\t'char': Prism.languages.c['char'],\n\t\t\t'comment': Prism.languages.c['comment'],\n\t\t\t'macro-name': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'function'\n\t\t\t\t}\n\t\t\t],\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /^(#\\s*)[a-z]+/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t'directive-hash': /^#/,\n\t\t\t'punctuation': /##|\\\\(?=[\\r\\n])/,\n\t\t\t'expression': {\n\t\t\t\tpattern: /\\S[\\s\\S]*/,\n\t\t\t\tinside: Prism.languages.c\n\t\t\t}\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('c', 'function', {\n\t// highlight predefined macros as constants\n\t'constant': /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n});\n\ndelete Prism.languages.c['boolean'];\n","(function (Prism) {\n\n\tvar keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n\tvar modName = /\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(//g, function () { return keyword.source; });\n\n\tPrism.languages.cpp = Prism.languages.extend('c', {\n\t\t'class-name': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+/.source\n\t\t\t\t\t.replace(//g, function () { return keyword.source; })),\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// This is intended to capture the class name of method implementations like:\n\t\t\t// void foo::bar() const {}\n\t\t\t// However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n\t\t\t// it starts with an uppercase letter. This approximation should give decent results.\n\t\t\t/\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n\t\t\t// This will capture the class name before destructors like:\n\t\t\t// Foo::~Foo() {}\n\t\t\t/\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n\t\t\t// This also intends to capture the class name of method implementations but here the class has template\n\t\t\t// parameters, so it can't be a namespace (until C++ adds generic namespaces).\n\t\t\t/\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n\t\t],\n\t\t'keyword': keyword,\n\t\t'number': {\n\t\t\tpattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n\t\t\tgreedy: true\n\t\t},\n\t\t'operator': />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n\t\t'boolean': /\\b(?:false|true)\\b/\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'string', {\n\t\t'module': {\n\t\t\t// https://en.cppreference.com/w/cpp/language/modules\n\t\t\tpattern: RegExp(\n\t\t\t\t/(\\b(?:import|module)\\s+)/.source +\n\t\t\t\t'(?:' +\n\t\t\t\t// header-name\n\t\t\t\t/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source +\n\t\t\t\t'|' +\n\t\t\t\t// module name or partition or both\n\t\t\t\t/(?:\\s*:\\s*)?|:\\s*/.source.replace(//g, function () { return modName; }) +\n\t\t\t\t')'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'string': /^[<\"][\\s\\S]+/,\n\t\t\t\t'operator': /:/,\n\t\t\t\t'punctuation': /\\./\n\t\t\t}\n\t\t},\n\t\t'raw-string': {\n\t\t\tpattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n\t\t\talias: 'string',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'keyword', {\n\t\t'generic-function': {\n\t\t\tpattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n\t\t\tinside: {\n\t\t\t\t'function': /^\\w+/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/,\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: Prism.languages.cpp\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'operator', {\n\t\t'double-colon': {\n\t\t\tpattern: /::/,\n\t\t\talias: 'punctuation'\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'class-name', {\n\t\t// the base clause is an optional list of parent classes\n\t\t// https://en.cppreference.com/w/cpp/language/class\n\t\t'base-clause': {\n\t\t\tpattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: Prism.languages.extend('cpp', {})\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'double-colon', {\n\t\t// All untokenized words that are not namespaces should be class names\n\t\t'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n\t}, Prism.languages.cpp['base-clause']);\n\n}(Prism));\n","(function (Prism) {\n\n\tvar keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n\n\t// full package (optional) + parent classes (optional)\n\tvar classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n\n\t// based on the java naming conventions\n\tvar className = {\n\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'namespace': {\n\t\t\t\tpattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\./\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\./\n\t\t}\n\t};\n\n\tPrism.languages.java = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': [\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t// variables, parameters, and constructor references\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t},\n\t\t\t{\n\t\t\t\t// class names based on keyword\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/.source + classNamePrefix + /[A-Z]\\w*\\b/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t}\n\t\t],\n\t\t'keyword': keywords,\n\t\t'function': [\n\t\t\tPrism.languages.clike.function,\n\t\t\t{\n\t\t\t\tpattern: /(::\\s*)[a-z_]\\w*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'constant': /\\b[A-Z][A-Z_\\d]+\\b/\n\t});\n\n\tPrism.languages.insertBefore('java', 'string', {\n\t\t'triple-quoted-string': {\n\t\t\t// http://openjdk.java.net/jeps/355#Description\n\t\t\tpattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t'char': {\n\t\t\tpattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('java', 'class-name', {\n\t\t'annotation': {\n\t\t\tpattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'generics': {\n\t\t\tpattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n\t\t\tinside: {\n\t\t\t\t'class-name': className,\n\t\t\t\t'keyword': keywords,\n\t\t\t\t'punctuation': /[<>(),.:]/,\n\t\t\t\t'operator': /[?&|]/\n\t\t\t}\n\t\t},\n\t\t'import': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+)/.source + classNamePrefix + /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+static\\s+)/.source + classNamePrefix + /(?:\\w+|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'static',\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'static': /\\b\\w+$/,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'namespace': {\n\t\t\tpattern: RegExp(\n\t\t\t\t/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/\n\t\t\t\t\t.source.replace(//g, function () { return keywords.source; })),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /\\./,\n\t\t\t}\n\t\t}\n\t});\n}(Prism));\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tif (!Prism.plugins.toolbar) {\n\t\tconsole.warn('Copy to Clipboard plugin loaded before Toolbar plugin.');\n\n\t\treturn;\n\t}\n\n\t/**\n\t * When the given elements is clicked by the user, the given text will be copied to clipboard.\n\t *\n\t * @param {HTMLElement} element\n\t * @param {CopyInfo} copyInfo\n\t *\n\t * @typedef CopyInfo\n\t * @property {() => string} getText\n\t * @property {() => void} success\n\t * @property {(reason: unknown) => void} error\n\t */\n\tfunction registerClipboard(element, copyInfo) {\n\t\telement.addEventListener('click', function () {\n\t\t\tcopyTextToClipboard(copyInfo);\n\t\t});\n\t}\n\n\t// https://stackoverflow.com/a/30810322/7595472\n\n\t/** @param {CopyInfo} copyInfo */\n\tfunction fallbackCopyTextToClipboard(copyInfo) {\n\t\tvar textArea = document.createElement('textarea');\n\t\ttextArea.value = copyInfo.getText();\n\n\t\t// Avoid scrolling to bottom\n\t\ttextArea.style.top = '0';\n\t\ttextArea.style.left = '0';\n\t\ttextArea.style.position = 'fixed';\n\n\t\tdocument.body.appendChild(textArea);\n\t\ttextArea.focus();\n\t\ttextArea.select();\n\n\t\ttry {\n\t\t\tvar successful = document.execCommand('copy');\n\t\t\tsetTimeout(function () {\n\t\t\t\tif (successful) {\n\t\t\t\t\tcopyInfo.success();\n\t\t\t\t} else {\n\t\t\t\t\tcopyInfo.error();\n\t\t\t\t}\n\t\t\t}, 1);\n\t\t} catch (err) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tcopyInfo.error(err);\n\t\t\t}, 1);\n\t\t}\n\n\t\tdocument.body.removeChild(textArea);\n\t}\n\t/** @param {CopyInfo} copyInfo */\n\tfunction copyTextToClipboard(copyInfo) {\n\t\tif (navigator.clipboard) {\n\t\t\tnavigator.clipboard.writeText(copyInfo.getText()).then(copyInfo.success, function () {\n\t\t\t\t// try the fallback in case `writeText` didn't work\n\t\t\t\tfallbackCopyTextToClipboard(copyInfo);\n\t\t\t});\n\t\t} else {\n\t\t\tfallbackCopyTextToClipboard(copyInfo);\n\t\t}\n\t}\n\n\t/**\n\t * Selects the text content of the given element.\n\t *\n\t * @param {Element} element\n\t */\n\tfunction selectElementText(element) {\n\t\t// https://stackoverflow.com/a/20079910/7595472\n\t\twindow.getSelection().selectAllChildren(element);\n\t}\n\n\t/**\n\t * Traverses up the DOM tree to find data attributes that override the default plugin settings.\n\t *\n\t * @param {Element} startElement An element to start from.\n\t * @returns {Settings} The plugin settings.\n\t * @typedef {Record<\"copy\" | \"copy-error\" | \"copy-success\" | \"copy-timeout\", string | number>} Settings\n\t */\n\tfunction getSettings(startElement) {\n\t\t/** @type {Settings} */\n\t\tvar settings = {\n\t\t\t'copy': 'Copy',\n\t\t\t'copy-error': 'Press Ctrl+C to copy',\n\t\t\t'copy-success': 'Copied!',\n\t\t\t'copy-timeout': 5000\n\t\t};\n\n\t\tvar prefix = 'data-prismjs-';\n\t\tfor (var key in settings) {\n\t\t\tvar attr = prefix + key;\n\t\t\tvar element = startElement;\n\t\t\twhile (element && !element.hasAttribute(attr)) {\n\t\t\t\telement = element.parentElement;\n\t\t\t}\n\t\t\tif (element) {\n\t\t\t\tsettings[key] = element.getAttribute(attr);\n\t\t\t}\n\t\t}\n\t\treturn settings;\n\t}\n\n\tPrism.plugins.toolbar.registerButton('copy-to-clipboard', function (env) {\n\t\tvar element = env.element;\n\n\t\tvar settings = getSettings(element);\n\n\t\tvar linkCopy = document.createElement('button');\n\t\tlinkCopy.className = 'copy-to-clipboard-button';\n\t\tlinkCopy.setAttribute('type', 'button');\n\t\tvar linkSpan = document.createElement('span');\n\t\tlinkCopy.appendChild(linkSpan);\n\n\t\tsetState('copy');\n\n\t\tregisterClipboard(linkCopy, {\n\t\t\tgetText: function () {\n\t\t\t\treturn element.textContent;\n\t\t\t},\n\t\t\tsuccess: function () {\n\t\t\t\tsetState('copy-success');\n\n\t\t\t\tresetText();\n\t\t\t},\n\t\t\terror: function () {\n\t\t\t\tsetState('copy-error');\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tselectElementText(element);\n\t\t\t\t}, 1);\n\n\t\t\t\tresetText();\n\t\t\t}\n\t\t});\n\n\t\treturn linkCopy;\n\n\t\tfunction resetText() {\n\t\t\tsetTimeout(function () { setState('copy'); }, settings['copy-timeout']);\n\t\t}\n\n\t\t/** @param {\"copy\" | \"copy-error\" | \"copy-success\"} state */\n\t\tfunction setState(state) {\n\t\t\tlinkSpan.textContent = settings[state];\n\t\t\tlinkCopy.setAttribute('data-copy-state', state);\n\t\t}\n\t});\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// \n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_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\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\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: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, 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\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, 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: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, 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: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n 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 {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\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-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\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}\\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: #fff;\\n}\\n\\n.sr-only {\\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 width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n 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 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 shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\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};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function 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}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { canUseDOM } from './utils';\nvar propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\n\nvar Portal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n\n this.defaultNode = null;\n };\n\n _proto.render = function render() {\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n\n return /*#__PURE__*/ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n };\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = propTypes;\nexport default Portal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\n\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n in: true\n});\n\nfunction Fade(props) {\n var Tag = props.tag,\n baseClass = props.baseClass,\n baseClassActive = props.baseClassActive,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n innerRef = props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, transitionProps, function (status) {\n var isActive = status === 'entered';\n var classes = mapToCssModules(classNames(className, baseClass, isActive && baseClassActive), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nexport default Fade;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Portal from './Portal';\nimport Fade from './Fade';\nimport { getOriginalBodyPadding, conditionallyUpdateScrollbar, setScrollbarWidth, mapToCssModules, omit, focusableElements, TransitionTimeouts, keyCodes, targetPropType, getTarget } from './utils';\n\nfunction noop() {}\n\nvar FadePropTypes = PropTypes.shape(Fade.propTypes);\nvar propTypes = {\n isOpen: PropTypes.bool,\n autoFocus: PropTypes.bool,\n centered: PropTypes.bool,\n scrollable: PropTypes.bool,\n size: PropTypes.string,\n toggle: PropTypes.func,\n keyboard: PropTypes.bool,\n role: PropTypes.string,\n labelledBy: PropTypes.string,\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n onEnter: PropTypes.func,\n onExit: PropTypes.func,\n onOpened: PropTypes.func,\n onClosed: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n wrapClassName: PropTypes.string,\n modalClassName: PropTypes.string,\n backdropClassName: PropTypes.string,\n contentClassName: PropTypes.string,\n external: PropTypes.node,\n fade: PropTypes.bool,\n cssModule: PropTypes.object,\n zIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n backdropTransition: FadePropTypes,\n modalTransition: FadePropTypes,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n unmountOnClose: PropTypes.bool,\n returnFocusAfterClose: PropTypes.bool,\n container: targetPropType,\n trapFocus: PropTypes.bool\n};\nvar propsToOmit = Object.keys(propTypes);\nvar defaultProps = {\n isOpen: false,\n autoFocus: true,\n centered: false,\n scrollable: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1050,\n fade: true,\n onOpened: noop,\n onClosed: noop,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // uses standard fade transition\n\n },\n unmountOnClose: true,\n returnFocusAfterClose: true,\n container: 'body',\n trapFocus: false\n};\n\nvar Modal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._element = null;\n _this._originalBodyPadding = null;\n _this.getFocusableChildren = _this.getFocusableChildren.bind(_assertThisInitialized(_this));\n _this.handleBackdropClick = _this.handleBackdropClick.bind(_assertThisInitialized(_this));\n _this.handleBackdropMouseDown = _this.handleBackdropMouseDown.bind(_assertThisInitialized(_this));\n _this.handleEscape = _this.handleEscape.bind(_assertThisInitialized(_this));\n _this.handleStaticBackdropAnimation = _this.handleStaticBackdropAnimation.bind(_assertThisInitialized(_this));\n _this.handleTab = _this.handleTab.bind(_assertThisInitialized(_this));\n _this.onOpened = _this.onOpened.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.manageFocusAfterClose = _this.manageFocusAfterClose.bind(_assertThisInitialized(_this));\n _this.clearBackdropAnimationTimeout = _this.clearBackdropAnimationTimeout.bind(_assertThisInitialized(_this));\n _this.trapFocus = _this.trapFocus.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: false,\n showStaticBackdropAnimation: false\n };\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props = this.props,\n isOpen = _this$props.isOpen,\n autoFocus = _this$props.autoFocus,\n onEnter = _this$props.onEnter;\n\n if (isOpen) {\n this.init();\n this.setState({\n isOpen: true\n });\n\n if (autoFocus) {\n this.setFocus();\n }\n }\n\n if (onEnter) {\n onEnter();\n } // traps focus inside the Modal, even if the browser address bar is focused\n\n\n document.addEventListener('focus', this.trapFocus, true);\n this._isMounted = true;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.props.isOpen && !prevProps.isOpen) {\n this.init();\n this.setState({\n isOpen: true\n }); // let render() renders Modal Dialog first\n\n return;\n } // now Modal Dialog is rendered and we can refer this._element and this._dialog\n\n\n if (this.props.autoFocus && this.state.isOpen && !prevState.isOpen) {\n this.setFocus();\n }\n\n if (this._element && prevProps.zIndex !== this.props.zIndex) {\n this._element.style.zIndex = this.props.zIndex;\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearBackdropAnimationTimeout();\n\n if (this.props.onExit) {\n this.props.onExit();\n }\n\n if (this._element) {\n this.destroy();\n\n if (this.props.isOpen || this.state.isOpen) {\n this.close();\n }\n }\n\n document.removeEventListener('focus', this.trapFocus, true);\n this._isMounted = false;\n };\n\n _proto.trapFocus = function trapFocus(ev) {\n if (!this.props.trapFocus) {\n return;\n }\n\n if (!this._element) //element is not attached\n return;\n if (this._dialog && this._dialog.parentNode === ev.target) // initial focus when the Modal is opened\n return;\n if (this.modalIndex < Modal.openCount - 1) // last opened modal\n return;\n var children = this.getFocusableChildren();\n\n for (var i = 0; i < children.length; i++) {\n // focus is already inside the Modal\n if (children[i] === ev.target) return;\n }\n\n if (children.length > 0) {\n // otherwise focus the first focusable element in the Modal\n ev.preventDefault();\n ev.stopPropagation();\n children[0].focus();\n }\n };\n\n _proto.onOpened = function onOpened(node, isAppearing) {\n this.props.onOpened();\n (this.props.modalTransition.onEntered || noop)(node, isAppearing);\n };\n\n _proto.onClosed = function onClosed(node) {\n var unmountOnClose = this.props.unmountOnClose; // so all methods get called before it is unmounted\n\n this.props.onClosed();\n (this.props.modalTransition.onExited || noop)(node);\n\n if (unmountOnClose) {\n this.destroy();\n }\n\n this.close();\n\n if (this._isMounted) {\n this.setState({\n isOpen: false\n });\n }\n };\n\n _proto.setFocus = function setFocus() {\n if (this._dialog && this._dialog.parentNode && typeof this._dialog.parentNode.focus === 'function') {\n this._dialog.parentNode.focus();\n }\n };\n\n _proto.getFocusableChildren = function getFocusableChildren() {\n return this._element.querySelectorAll(focusableElements.join(', '));\n };\n\n _proto.getFocusedChild = function getFocusedChild() {\n var currentFocus;\n var focusableChildren = this.getFocusableChildren();\n\n try {\n currentFocus = document.activeElement;\n } catch (err) {\n currentFocus = focusableChildren[0];\n }\n\n return currentFocus;\n } // not mouseUp because scrollbar fires it, shouldn't close when user scrolls\n ;\n\n _proto.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target === this._mouseDownElement) {\n e.stopPropagation();\n var backdrop = this._dialog ? this._dialog.parentNode : null;\n\n if (backdrop && e.target === backdrop && this.props.backdrop === 'static') {\n this.handleStaticBackdropAnimation();\n }\n\n if (!this.props.isOpen || this.props.backdrop !== true) return;\n\n if (backdrop && e.target === backdrop && this.props.toggle) {\n this.props.toggle(e);\n }\n }\n };\n\n _proto.handleTab = function handleTab(e) {\n if (e.which !== 9) return;\n if (this.modalIndex < Modal.openCount - 1) return; // last opened modal\n\n var focusableChildren = this.getFocusableChildren();\n var totalFocusable = focusableChildren.length;\n if (totalFocusable === 0) return;\n var currentFocus = this.getFocusedChild();\n var focusedIndex = 0;\n\n for (var i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n focusableChildren[totalFocusable - 1].focus();\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n focusableChildren[0].focus();\n }\n };\n\n _proto.handleBackdropMouseDown = function handleBackdropMouseDown(e) {\n this._mouseDownElement = e.target;\n };\n\n _proto.handleEscape = function handleEscape(e) {\n if (this.props.isOpen && e.keyCode === keyCodes.esc && this.props.toggle) {\n if (this.props.keyboard) {\n e.preventDefault();\n e.stopPropagation();\n this.props.toggle(e);\n } else if (this.props.backdrop === 'static') {\n e.preventDefault();\n e.stopPropagation();\n this.handleStaticBackdropAnimation();\n }\n }\n };\n\n _proto.handleStaticBackdropAnimation = function handleStaticBackdropAnimation() {\n var _this2 = this;\n\n this.clearBackdropAnimationTimeout();\n this.setState({\n showStaticBackdropAnimation: true\n });\n this._backdropAnimationTimeout = setTimeout(function () {\n _this2.setState({\n showStaticBackdropAnimation: false\n });\n }, 100);\n };\n\n _proto.init = function init() {\n try {\n this._triggeringElement = document.activeElement;\n } catch (err) {\n this._triggeringElement = null;\n }\n\n if (!this._element) {\n this._element = document.createElement('div');\n\n this._element.setAttribute('tabindex', '-1');\n\n this._element.style.position = 'relative';\n this._element.style.zIndex = this.props.zIndex;\n this._mountContainer = getTarget(this.props.container);\n\n this._mountContainer.appendChild(this._element);\n }\n\n this._originalBodyPadding = getOriginalBodyPadding();\n conditionallyUpdateScrollbar();\n\n if (Modal.openCount === 0) {\n document.body.className = classNames(document.body.className, mapToCssModules('modal-open', this.props.cssModule));\n }\n\n this.modalIndex = Modal.openCount;\n Modal.openCount += 1;\n };\n\n _proto.destroy = function destroy() {\n if (this._element) {\n this._mountContainer.removeChild(this._element);\n\n this._element = null;\n }\n\n this.manageFocusAfterClose();\n };\n\n _proto.manageFocusAfterClose = function manageFocusAfterClose() {\n if (this._triggeringElement) {\n var returnFocusAfterClose = this.props.returnFocusAfterClose;\n if (this._triggeringElement.focus && returnFocusAfterClose) this._triggeringElement.focus();\n this._triggeringElement = null;\n }\n };\n\n _proto.close = function close() {\n if (Modal.openCount <= 1) {\n var modalOpenClassName = mapToCssModules('modal-open', this.props.cssModule); // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n\n var modalOpenClassNameRegex = new RegExp(\"(^| )\" + modalOpenClassName + \"( |$)\");\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n }\n\n this.manageFocusAfterClose();\n Modal.openCount = Math.max(0, Modal.openCount - 1);\n setScrollbarWidth(this._originalBodyPadding);\n };\n\n _proto.renderModalDialog = function renderModalDialog() {\n var _classNames,\n _this3 = this;\n\n var attributes = omit(this.props, propsToOmit);\n var dialogBaseClass = 'modal-dialog';\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: mapToCssModules(classNames(dialogBaseClass, this.props.className, (_classNames = {}, _classNames[\"modal-\" + this.props.size] = this.props.size, _classNames[dialogBaseClass + \"-centered\"] = this.props.centered, _classNames[dialogBaseClass + \"-scrollable\"] = this.props.scrollable, _classNames)), this.props.cssModule),\n role: \"document\",\n ref: function ref(c) {\n _this3._dialog = c;\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-content', this.props.contentClassName), this.props.cssModule)\n }, this.props.children));\n };\n\n _proto.render = function render() {\n var unmountOnClose = this.props.unmountOnClose;\n\n if (!!this._element && (this.state.isOpen || !unmountOnClose)) {\n var isModalHidden = !!this._element && !this.state.isOpen && !unmountOnClose;\n this._element.style.display = isModalHidden ? 'none' : 'block';\n var _this$props2 = this.props,\n wrapClassName = _this$props2.wrapClassName,\n modalClassName = _this$props2.modalClassName,\n backdropClassName = _this$props2.backdropClassName,\n cssModule = _this$props2.cssModule,\n isOpen = _this$props2.isOpen,\n backdrop = _this$props2.backdrop,\n role = _this$props2.role,\n labelledBy = _this$props2.labelledBy,\n external = _this$props2.external,\n innerRef = _this$props2.innerRef;\n var modalAttributes = {\n onClick: this.handleBackdropClick,\n onMouseDown: this.handleBackdropMouseDown,\n onKeyUp: this.handleEscape,\n onKeyDown: this.handleTab,\n style: {\n display: 'block'\n },\n 'aria-labelledby': labelledBy,\n role: role,\n tabIndex: '-1'\n };\n var hasTransition = this.props.fade;\n\n var modalTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.modalTransition), {}, {\n baseClass: hasTransition ? this.props.modalTransition.baseClass : '',\n timeout: hasTransition ? this.props.modalTransition.timeout : 0\n });\n\n var backdropTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.backdropTransition), {}, {\n baseClass: hasTransition ? this.props.backdropTransition.baseClass : '',\n timeout: hasTransition ? this.props.backdropTransition.timeout : 0\n });\n\n var Backdrop = backdrop && (hasTransition ? /*#__PURE__*/React.createElement(Fade, _extends({}, backdropTransition, {\n in: isOpen && !!backdrop,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal-backdrop', backdropClassName), cssModule)\n })) : /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-backdrop', 'show', backdropClassName), cssModule)\n }));\n return /*#__PURE__*/React.createElement(Portal, {\n node: this._element\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(wrapClassName)\n }, /*#__PURE__*/React.createElement(Fade, _extends({}, modalAttributes, modalTransition, {\n in: isOpen,\n onEntered: this.onOpened,\n onExited: this.onClosed,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal', modalClassName, this.state.showStaticBackdropAnimation && 'modal-static'), cssModule),\n innerRef: innerRef\n }), external, this.renderModalDialog()), Backdrop));\n }\n\n return null;\n };\n\n _proto.clearBackdropAnimationTimeout = function clearBackdropAnimationTimeout() {\n if (this._backdropAnimationTimeout) {\n clearTimeout(this._backdropAnimationTimeout);\n this._backdropAnimationTimeout = undefined;\n }\n };\n\n return Modal;\n}(React.Component);\n\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.openCount = 0;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"children\", \"toggle\", \"tag\", \"wrapTag\", \"closeAriaLabel\", \"charCode\", \"close\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n wrapTag: tagPropType,\n toggle: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n closeAriaLabel: PropTypes.string,\n charCode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n close: PropTypes.object\n};\nvar defaultProps = {\n tag: 'h5',\n wrapTag: 'div',\n closeAriaLabel: 'Close',\n charCode: 215\n};\n\nvar ModalHeader = function ModalHeader(props) {\n var closeButton;\n\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n toggle = props.toggle,\n Tag = props.tag,\n WrapTag = props.wrapTag,\n closeAriaLabel = props.closeAriaLabel,\n charCode = props.charCode,\n close = props.close,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-header'), cssModule);\n\n if (!close && toggle) {\n var closeIcon = typeof charCode === 'number' ? String.fromCharCode(charCode) : charCode;\n closeButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: toggle,\n className: mapToCssModules('close', cssModule),\n \"aria-label\": closeAriaLabel\n }, /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, closeIcon));\n }\n\n return /*#__PURE__*/React.createElement(WrapTag, _extends({}, attributes, {\n className: classes\n }), /*#__PURE__*/React.createElement(Tag, {\n className: mapToCssModules('modal-title', cssModule)\n }, children), close || closeButton);\n};\n\nModalHeader.propTypes = propTypes;\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalBody = function ModalBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalBody.propTypes = propTypes;\nModalBody.defaultProps = defaultProps;\nexport default ModalBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalFooter = function ModalFooter(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-footer'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalFooter.propTypes = propTypes;\nModalFooter.defaultProps = defaultProps;\nexport default ModalFooter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n active: PropTypes.bool,\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n color: PropTypes.string,\n disabled: PropTypes.bool,\n outline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n onClick: PropTypes.func,\n size: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n close: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n tag: 'button'\n};\n\nvar Button = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Button, _React$Component);\n\n function Button(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n return this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n ariaLabel = _this$props['aria-label'],\n block = _this$props.block,\n className = _this$props.className,\n close = _this$props.close,\n cssModule = _this$props.cssModule,\n color = _this$props.color,\n outline = _this$props.outline,\n size = _this$props.size,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n if (close && typeof attributes.children === 'undefined') {\n attributes.children = /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true\n }, \"\\xD7\");\n }\n\n var btnOutlineColor = \"btn\" + (outline ? '-outline' : '') + \"-\" + color;\n var classes = mapToCssModules(classNames(className, {\n close: close\n }, close || 'btn', close || btnOutlineColor, size ? \"btn-\" + size : false, block ? 'btn-block' : false, {\n active: active,\n disabled: this.props.disabled\n }), cssModule);\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n var defaultAriaLabel = close ? 'Close' : null;\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: this.onClick,\n \"aria-label\": ariaLabel || defaultAriaLabel\n }));\n };\n\n return Button;\n}(React.Component);\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"size\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n size: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar InputGroup = function InputGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n size = props.size,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'input-group', size ? \"input-group-\" + size : null), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nInputGroup.propTypes = propTypes;\nInputGroup.defaultProps = defaultProps;\nexport default InputGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'span'\n};\n\nvar InputGroupText = function InputGroupText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'input-group-text'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nInputGroupText.propTypes = propTypes;\nInputGroupText.defaultProps = defaultProps;\nexport default InputGroupText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"addonType\", \"children\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport InputGroupText from './InputGroupText';\nvar propTypes = {\n tag: tagPropType,\n addonType: PropTypes.oneOf(['prepend', 'append']).isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar InputGroupAddon = function InputGroupAddon(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n addonType = props.addonType,\n children = props.children,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'input-group-' + addonType), cssModule); // Convenience to assist with transition\n\n if (typeof children === 'string') {\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }), /*#__PURE__*/React.createElement(InputGroupText, {\n children: children\n }));\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n children: children\n }));\n};\n\nInputGroupAddon.propTypes = propTypes;\nInputGroupAddon.defaultProps = defaultProps;\nexport default InputGroupAddon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"bsSize\", \"valid\", \"invalid\", \"tag\", \"addon\", \"plaintext\", \"innerRef\"];\n\n/* eslint react/prefer-stateless-function: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, warnOnce, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n type: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n bsSize: PropTypes.string,\n valid: PropTypes.bool,\n invalid: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n plaintext: PropTypes.bool,\n addon: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n type: 'text'\n};\n\nvar Input = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Input, _React$Component);\n\n function Input(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.focus = _this.focus.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Input.prototype;\n\n _proto.getRef = function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n this.ref = ref;\n };\n\n _proto.focus = function focus() {\n if (this.ref) {\n this.ref.focus();\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n type = _this$props.type,\n bsSize = _this$props.bsSize,\n valid = _this$props.valid,\n invalid = _this$props.invalid,\n tag = _this$props.tag,\n addon = _this$props.addon,\n plaintext = _this$props.plaintext,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var checkInput = ['radio', 'checkbox'].indexOf(type) > -1;\n var isNotaNumber = new RegExp('\\\\D', 'g');\n var fileInput = type === 'file';\n var textareaInput = type === 'textarea';\n var selectInput = type === 'select';\n var rangeInput = type === 'range';\n var Tag = tag || (selectInput || textareaInput ? type : 'input');\n var formControlClass = 'form-control';\n\n if (plaintext) {\n formControlClass = formControlClass + \"-plaintext\";\n Tag = tag || 'input';\n } else if (fileInput) {\n formControlClass = formControlClass + \"-file\";\n } else if (rangeInput) {\n formControlClass = formControlClass + \"-range\";\n } else if (checkInput) {\n if (addon) {\n formControlClass = null;\n } else {\n formControlClass = 'form-check-input';\n }\n }\n\n if (attributes.size && isNotaNumber.test(attributes.size)) {\n warnOnce('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = attributes.size;\n delete attributes.size;\n }\n\n var classes = mapToCssModules(classNames(className, invalid && 'is-invalid', valid && 'is-valid', bsSize ? \"form-control-\" + bsSize : false, formControlClass), cssModule);\n\n if (Tag === 'input' || tag && typeof tag === 'function') {\n attributes.type = type;\n }\n\n if (attributes.children && !(plaintext || type === 'select' || typeof Tag !== 'string' || Tag === 'select')) {\n warnOnce(\"Input with a type of \\\"\" + type + \"\\\" cannot have children. Please use \\\"value\\\"/\\\"defaultValue\\\" instead.\");\n delete attributes.children;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes,\n \"aria-invalid\": invalid\n }));\n };\n\n return Input;\n}(React.Component);\n\nInput.propTypes = propTypes;\nInput.defaultProps = defaultProps;\nexport default Input;","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'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} 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} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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} params - The parameters to be converted to a FormData object.\n * @param {Object} 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 replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\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","'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","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== '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 = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\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\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\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';\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} 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 | 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'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'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 {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\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';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport 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) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : 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\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n 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) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\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 adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n 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) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.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\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';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import ax from 'axios';\nimport humanizeDuration from 'humanize-duration';\n\nexport const humanDuration = humanizeDuration.humanizer({\n language: 'shortEn',\n languages: {\n shortEn: {\n y: () => 'y',\n mo: () => 'mo',\n w: () => 'w',\n d: () => 'd',\n h: () => 'h',\n m: () => 'min',\n s: () => 's',\n ms: () => 'ms',\n },\n },\n spacer: '',\n delimiter: ' ',\n maxDecimalPoints: 3,\n});\n\nconst intersect2 = (xs, ys) => xs.filter((x) => ys.some((y) => y === x));\nexport const intersect = (xs, ys, ...rest) =>\n ys === undefined ? xs : intersect(intersect2(xs, ys), ...rest);\nexport const difference = (xs, ys) => xs.filter((x) => !ys.includes(x));\n\nexport const toggleElement = (arr, item) =>\n arr.includes(item) ? arr.filter((i) => i !== item) : [...arr, item];\n\nexport const validateEmail = (email) => {\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n};\n\nexport const getServerTime = () => {\n const axios = ax.create();\n return new Promise((resolve, reject) => {\n axios\n .get(window.location.href.toString())\n .then((data) => resolve(data.headers.date))\n .catch((err) => reject(err));\n });\n};\n\nexport const isNumber = (val) => {\n return /^-?[\\d.]+(?:e-?\\d+)?$/.test(val);\n};\n\nexport const betterModulo = (x, n) => {\n return ((x % n) + n) % n;\n};\n\nexport const unixTimeToString = (timestamp) => {\n const date = new Date(timestamp);\n const hours = ('0' + date.getHours()).slice(-2);\n const minutes = ('0' + date.getMinutes()).slice(-2);\n const seconds = ('0' + date.getSeconds()).slice(-2);\n const milliseconds = ('00' + date.getMilliseconds()).slice(-3);\n return timestamp === 0\n ? '00:00:00.000'\n : `${hours}:${minutes}:${seconds}.${milliseconds}`;\n};\n\nexport const toPercentage = (p) => (p * 100).toFixed(2) + '%';\n\n/**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n *\n * @license CC BY-SA 4.0\n * @see https://stackoverflow.com/a/14919494/3873452\n */\nexport function humanFileSize(bytes, si = false, dp = 1) {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = si\n ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n}\n\nexport const downloadBlob = (blob, filename) => {\n const href = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = href;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\n// https://stackoverflow.com/a/11381730/3873452\nexport const mobileAndTabletCheck = function () {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n};\n\nexport const objMap = function objMap(obj, fn) {\n return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fn(v)]));\n};\n\n// https://gist.githubusercontent.com/ayushv512/a2f963bface38f5e2f6f6bba39bba9b9/raw/97a24a166113b3af575ba8751f83286b8acd5752/throttle.js\nexport const throttle = (func, limit) => {\n let lastFunc;\n let lastRan;\n return function () {\n const context = this;\n const args = arguments;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = Date.now();\n } else {\n clearTimeout(lastFunc);\n lastFunc = setTimeout(function () {\n if (Date.now() - lastRan >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - lastRan));\n }\n };\n};\n\n// https://gist.githubusercontent.com/ayushv512/f7e9df182ec0433d231d360fdba45668/raw/2912d2a034fe993968c5d2dcf8e520ff7371abea/debounce.js\nexport const debounce = function (func, delay) {\n let timer;\n return function () {\n //anonymous function\n const context = this;\n const args = arguments;\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(context, args);\n }, delay);\n };\n};\n\n//calculate date from timestamp\nexport const displayTime = (time) => {\n const minTimestamp = -8640000000000000;\n const maxTimestamp = 8640000000000000;\n if (time < minTimestamp || time > maxTimestamp) {\n return '-';\n }\n const date = new Date(time);\n return `${date.toLocaleDateString()} at ${date.toLocaleTimeString()}`;\n};\n","export const setToken = function (accessToken, refreshToken) {\n localStorage.setItem('access_token', accessToken);\n localStorage.setItem('refresh_token', refreshToken);\n};\n\nexport const getAccessToken = function () {\n return localStorage.getItem('access_token');\n};\n\nexport const getRefreshToken = function () {\n return localStorage.getItem('refresh_token');\n};\n\nexport const clearToken = function () {\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n localStorage.removeItem('project_id');\n};\n\nexport const setProject = function (project_id) {\n console.log('SET PROJECT: ', project_id);\n localStorage.setItem('project_id', project_id);\n};\n\nexport const clearProject = function () {\n localStorage.removeItem('project_id');\n};\n\nexport const getProject = function () {\n return localStorage.getItem('project_id');\n};\n\nconst expObj = {\n setToken,\n getAccessToken,\n getRefreshToken,\n clearToken,\n setProject,\n clearProject,\n getProject,\n};\nexport default expObj;\n","import localStorageService from './../LocalStorageService';\n\nconst currentHost = window.location.host.split(':')[0];\n\nexport const AUTH_URI =\n process.env.NODE_ENV === 'production'\n ? '/auth/'\n : window.location.host === 'edge-ml.ngrok.io'\n ? 'http://auth.edge-ml.ngrok.io/auth/'\n : `http://${currentHost}:3002/auth/`;\n\nexport const API_URI =\n process.env.NODE_ENV === 'production'\n ? '/api/'\n : window.location.host === 'edge-ml.ngrok.io'\n ? 'http://backend.edge-ml.ngrok.io/api/'\n : `http://${currentHost}:3001/api/`;\nexport const ML_URI =\n process.env.NODE_ENV === 'production'\n ? '/ml/'\n : window.location.host === 'edge-ml.ngrok.io'\n ? 'http://ml.edge-ml.ngrok.io/ml/'\n : `http://${currentHost}:3003/ml/`;\n\nexport const DATASET_STORE =\n process.env.NODE_ENV === 'production'\n ? '/ds/'\n : window.location.host === 'edge-ml.ngrok.io'\n ? 'http://ds.edge-ml.ngrok.io/ds/'\n : `http://${currentHost}:3004/ds/`;\n\nexport const HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n};\n\nexport const AUTH_ENDPOINTS = {\n DEFAULT: '/',\n LOGIN: 'login',\n REFRESH: 'refresh',\n DELETE: 'unregister',\n REGISTER: 'register',\n USERS: 'USERS',\n INIT2FA: '2fa/init',\n VERIFY2FA: '2fa/verify',\n RESET2FA: '2fa/reset',\n MAIL: 'mail',\n CHANGE_MAIL: 'changeMail',\n USERNAMESUGGEST: 'userNameSuggest',\n CHANGE_PASSWORD: 'changePassword',\n ID: 'id',\n CHANGE_USERNAME: 'changeUserName',\n USERNAME: 'userName',\n};\n\nexport const API_ENDPOINTS = {\n DATASETS: 'datasets',\n DATASETS_CAN_EDIT: 'datasets/canedit',\n DEVICE: 'devices',\n LABEL_DEFINITIONS: 'labelDefinitions',\n DATASET_LABEL_DEFINITIONS: 'datasetLabelDefinitions',\n LABEL_TYPES: 'labelTypes',\n EXPERIMENTS: 'experiments',\n PROJECTS: 'projects',\n SETDEVICEAPIKEY: 'deviceApi/setkey',\n GETDEVICEAPIKEY: 'deviceApi/getkey',\n REMOVEDEVICEAPIKEY: 'deviceApi/deletekey',\n SWTICHDEVICEAPIACTIVE: 'deviceApi/switchActive',\n ARDUINOFIRMWARE: 'arduinoFirmware',\n PROCESS_CSV: 'CSVServices/processCSV',\n GENERATE_DATASET: 'CSVServices/generateDataset',\n};\n\nexport const ML_ENDPOINTS = {\n MODELS: 'models',\n TRAIN: 'train',\n TRAIN_ONGOING: 'train/ongoing',\n TRAINED_MODELS: 'models/trained',\n DEPLOY: 'deploy',\n PARAMETERS: 'parameters',\n};\n\nexport const DATASET_STORE_ENDPOINTS = {\n DATASETS: 'datasets/',\n DATASETS_VIEW: 'datasets/view',\n DATASET_LABELINGS: 'datasets/labelings/',\n LABELING: 'labelings/',\n CSV: 'download/',\n CREATE_DATASET: 'datasets/create',\n GET_PROCESSING_PROGRESS: 'datasets/create/progress',\n};\n\nexport const generateApiRequest = (\n method = this.HTTP_METHODS.GET,\n baseUri = this.API_URI,\n endpoint = this.API_ENDPOINTS.DEFAULT,\n body = {},\n params = {},\n contentType = 'application/json'\n) => {\n const project = localStorageService.getProject();\n return {\n method: method,\n url: baseUri + endpoint,\n data: body,\n params: params,\n headers: {\n 'Content-Type': contentType,\n ...(project && { project: project }),\n Authorization: localStorageService.getAccessToken(),\n },\n };\n};\n\nconst expObj = {\n AUTH_URI,\n API_URI,\n ML_URI,\n DATASET_STORE,\n HTTP_METHODS,\n AUTH_ENDPOINTS,\n API_ENDPOINTS,\n ML_ENDPOINTS,\n DATASET_STORE_ENDPOINTS,\n generateApiRequest,\n};\n\nexport default expObj;\n","import apiConsts from './ApiConstants';\nimport ax from 'axios';\n\nconst axios = ax.create();\nconst axiosNoToken = ax.create();\n\nexport const loginUser = function (userEMail, password) {\n return new Promise((resolve, reject) => {\n axiosNoToken(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.LOGIN,\n {\n email: userEMail,\n password: password,\n }\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const loginUserRefresh = (refreshToken) => {\n return new Promise((resolve, reject) => {\n axiosNoToken(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.REFRESH,\n {\n refresh_token: refreshToken,\n }\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const deleteUser = (userEMail) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.DELETE,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.DELETE,\n {\n email: userEMail,\n }\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const registerNewUser = function (userEMail, password, userName) {\n return new Promise((resolve, reject) => {\n axiosNoToken(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.REGISTER,\n {\n email: userEMail,\n password: password,\n userName: userName,\n }\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response.data.error));\n });\n};\n\nexport const subscribeUsers = (callback) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.USERS\n )\n )\n .then((res) => callback(res.data))\n .catch(() => callback([]));\n });\n};\n\nexport const init2FA = () => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.INIT2FA\n )\n )\n .then((res) => resolve(res.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const verify2FA = (token) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.VERIFY2FA,\n { token: token }\n )\n )\n .then((res) => resolve(res.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const reset2FA = () => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.RESET2FA\n )\n )\n .then((res) => resolve(res.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getUserMail = (userIDs) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.MAIL,\n userIDs\n )\n )\n .then((res) => {\n resolve(res.data[0]);\n })\n .catch((err) => {\n reject(err.response);\n });\n });\n};\n\nexport const changeUserMail = (newUserMail) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.CHANGE_MAIL,\n { email: newUserMail }\n )\n )\n .then((res) => resolve(res.data))\n .catch((err) => reject(err.response.data));\n });\n};\n\nexport const changeUserName = (newUserName) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.CHANGE_USERNAME,\n { userName: newUserName }\n )\n )\n .then((data) => {\n resolve(data.data);\n })\n .catch((err) => {\n reject(err.response.data);\n });\n });\n};\n\nexport const changeUserPassword = (currentPassword, newPassword) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.CHANGE_PASSWORD,\n { password: currentPassword, newPassword: newPassword }\n )\n )\n .then((res) => resolve(res.data))\n .catch((err) => reject(err.response.data));\n });\n};\n\nexport const getUserIds = (userNames) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.ID,\n userNames\n )\n )\n .then((data) => {\n resolve(data.data);\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getUserNameSuggestions = (userName) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.AUTH_URI,\n apiConsts.AUTH_ENDPOINTS.USERNAMESUGGEST,\n { userName: userName }\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response.data.error));\n });\n};\n","import React, { Component } from 'react';\nimport {\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n} from 'reactstrap';\n\nimport { validateEmail } from './../../services/helpers';\nimport { changeUserMail } from './../../services/ApiServices/AuthentificationServices';\n\nclass MailSettings extends Component {\n constructor(props) {\n super(props);\n this.state = {\n newEmail: undefined,\n confirmationEmail: undefined,\n emailError: undefined,\n };\n this.onNewEmailChange = this.onNewEmailChange.bind(this);\n this.onConfirmationEmailChange = this.onConfirmationEmailChange.bind(this);\n this.onEmailChangeSubmit = this.onEmailChangeSubmit.bind(this);\n }\n\n onNewEmailChange(e) {\n this.setState({\n emailError: undefined,\n newEmail: e.target.value,\n });\n }\n onConfirmationEmailChange(e) {\n this.setState({\n emailError: undefined,\n confirmationEmail: e.target.value,\n });\n }\n\n onEmailChangeSubmit() {\n if (!this.state.newEmail && !this.state.confirmationEmail) return;\n if (this.state.newEmail !== this.state.confirmationEmail) {\n this.setState({\n emailError: 'E-mails do not match',\n });\n } else if (!validateEmail(this.state.newEmail)) {\n this.setState({\n emailError: 'Not a valid e-mail format',\n });\n } else {\n changeUserMail(this.state.newEmail)\n .then((data) => window.alert(data))\n .catch((err) => {\n this.setState({\n emailError: err.error,\n });\n });\n }\n }\n\n render() {\n return (\n
\n

Change Mail

\n \n \n E-Mail\n \n \n \n \n \n E-Mail\n \n \n \n \n Save new e-mail\n \n {this.state.emailError ? (\n \n {this.state.emailError}\n
\n ) : null}\n
\n );\n }\n}\n\nexport default MailSettings;\n","import React, { Component } from 'react';\nimport {\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n} from 'reactstrap';\n\nimport { changeUserPassword } from './../../services/ApiServices/AuthentificationServices';\n\nclass PasswordSettings extends Component {\n constructor(props) {\n super(props);\n this.state = {\n newPassword: undefined,\n newConfirmationPassword: undefined,\n currentPassword: undefined,\n passwordError: undefined,\n };\n this.onNewPasswordChange = this.onNewPasswordChange.bind(this);\n this.onConfirmationPasswordChange =\n this.onConfirmationPasswordChange.bind(this);\n this.onCurrentPasswordChanged = this.onCurrentPasswordChanged.bind(this);\n this.onPasswordChangeSubmit = this.onPasswordChangeSubmit.bind(this);\n }\n\n onNewPasswordChange(e) {\n this.setState({\n newPassword: e.target.value,\n passwordError: undefined,\n });\n }\n\n onConfirmationPasswordChange(e) {\n this.setState({\n newConfirmationPassword: e.target.value,\n passwordError: undefined,\n });\n }\n\n onCurrentPasswordChanged(e) {\n this.setState({\n currentPassword: e.target.value,\n passwordError: undefined,\n });\n }\n\n onPasswordChangeSubmit() {\n if (\n !this.state.newPassword &&\n !this.state.newConfirmationPassword &&\n !this.state.currentPassword\n ) {\n return;\n }\n if (this.state.newPassword !== this.state.newConfirmationPassword) {\n this.setState({\n passwordError: 'Passwords do not match',\n });\n return;\n }\n changeUserPassword(this.state.currentPassword, this.state.newPassword)\n .then((data) => window.alert(data))\n .catch((err) => {\n this.setState({\n passwordError: err.data,\n });\n });\n }\n\n render() {\n return (\n
\n

Change password

\n \n \n Password\n \n \n \n \n \n Password\n \n \n \n \n \n Password\n \n \n \n \n Save new password\n \n {this.state.passwordError ? (\n \n {this.state.passwordError}\n
\n ) : null}\n \n );\n }\n}\n\nexport default PasswordSettings;\n","import React, { Component } from 'react';\nimport {\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n} from 'reactstrap';\n\nimport { changeUserName } from '../../services/ApiServices/AuthentificationServices';\n\nclass UserNameSettings extends Component {\n constructor(props) {\n super(props);\n this.state = {\n userName: undefined,\n userNameConfirm: undefined,\n userNameError: undefined,\n };\n\n this.onUserNameChange = this.onUserNameChange.bind(this);\n this.onUserNameConfirmChange = this.onUserNameConfirmChange.bind(this);\n this.onUserNameSubmit = this.onUserNameSubmit.bind(this);\n }\n\n onUserNameChange(e) {\n this.setState({\n userName: e.target.value,\n userNameError: undefined,\n });\n }\n\n onUserNameConfirmChange(e) {\n this.setState({\n userNameConfirm: e.target.value,\n userNameError: undefined,\n });\n }\n\n onUserNameSubmit() {\n if (!this.state.userName && !this.state.userNameConfirm) return;\n if (this.state.userName !== this.state.userNameConfirm) {\n this.setState({\n userNameError: 'E-mails do not match',\n });\n } else {\n changeUserName(this.state.userName)\n .then((data) => window.alert(data))\n .catch((err) => {\n this.setState({\n userNameError: err.error,\n });\n });\n }\n }\n\n render() {\n return (\n
\n

Change UserName

\n \n \n Username\n \n \n \n \n \n Username\n \n \n \n \n Save new username\n \n {this.state.userNameError ? (\n \n {this.state.userNameError}\n
\n ) : null}\n \n );\n }\n}\n\nexport default UserNameSettings;\n","import React, { Component, useState } from 'react';\nimport {\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from 'reactstrap';\n\nclass DeleteUser extends Component {\n constructor(props) {\n super(props);\n this.state = {\n confirmationMail: '',\n confirmationModalOpen: false,\n };\n this.eMailChanged = this.eMailChanged.bind(this);\n this.toggleConfirmationModal = this.toggleConfirmationModal.bind(this);\n this.deleteUser = this.deleteUser.bind(this);\n }\n\n eMailChanged(e) {\n this.setState({\n confirmationMail: e.target.value,\n });\n }\n\n toggleConfirmationModal() {\n this.setState((prevState) => ({\n confirmationModalOpen: !prevState.confirmationModalOpen,\n }));\n }\n\n deleteUser() {\n this.props.deleteUser(this.state.confirmationMail);\n this.toggleConfirmationModal();\n }\n\n render() {\n return (\n
\n

Delete User

\n
\n
\n Please type {this.props.userMail} to confirm\n
\n
All projects where you are admin will be deleted
\n
\n \n \n E-Mail\n \n \n \n \n Delete user\n \n \n \n Confirm User Deletion\n \n \n Are you sure you want to delete your user account?
\n When you delete your account, all projects where you are the admin\n will be deleted!\n
\n \n \n Delete\n \n \n \n \n
\n );\n }\n}\n\nexport default DeleteUser;\n","import React, { Component } from 'react';\n\nimport { deleteUser } from '../../services/ApiServices/AuthentificationServices';\n\nclass UserSettingsProvider extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.onDeleteUser = this.onDeleteUser.bind(this);\n }\n\n onDeleteUser(confirmationMail) {\n deleteUser(confirmationMail).then(() => {\n this.props.onLogout();\n });\n }\n\n render() {\n return (\n
\n {React.cloneElement(this.props.children, {\n ...this.props,\n deleteUser: this.onDeleteUser,\n })}\n
\n );\n }\n}\n\nexport default UserSettingsProvider;\n","import React from 'react';\nimport { Modal, ModalHeader, ModalFooter, ModalBody, Button } from 'reactstrap';\nimport MailSettings from './MailSettings';\nimport PasswordSettings from './PasswordSettings';\nimport UserNameSettings from './UserNameSettings';\nimport DeleteUser from './DeleteUser';\nimport UserSettingsProvider from './UserSettingsProvider';\n\nconst UserSettingsModal = (props) => {\n return (\n \n User Settings\n \n \n
\n \n
\n \n
\n \n \n \n
\n \n \n Close\n \n \n
\n );\n};\n\nexport default UserSettingsModal;\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 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};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V256H416c-17.7 0-32-14.3-32-32V128H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm256 88v96h96l-96-96z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C640 440 568.7 512 480 512c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1v0c0-.1 .1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 41 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.7 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256A128 128 0 1 1 224 0a128 128 0 1 1 0 256zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 36-146.9c2-8.1 9.8-13.4 17.9-11.3c70.1 17.6 121.9 81 121.9 156.4c0 17-13.8 30.7-30.7 30.7H285.5c-2.1 0-4-.4-5.8-1.1l.3 1.1H168l.3-1.1c-1.8 .7-3.8 1.1-5.8 1.1H30.7C13.8 512 0 498.2 0 481.3c0-75.5 51.9-138.9 121.9-156.4c8.1-2 15.9 3.3 17.9 11.3l36 146.9 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L41.2 128.5C17.9 131.8 0 151.8 0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"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.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8v0c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320v0c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256v0C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2v0z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M320 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L320.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L320.1 439.8 191.8 508.3C181 514 167.9 513.1 158 506s-14.9-19.3-12.9-31.3L169.8 329 65.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L227 150.3 291.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L470.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0h80c13.3 0 24 10.7 24 24V64H96V24c0-13.3 10.7-24 24-24zM32 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.1 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C40.5 415.4 32 400.7 32 384s8.5-31.4 21.5-40C40.5 335.4 32 320.7 32 304s8.5-31.4 21.5-40C40.5 255.4 32 240.7 32 224c0-15.6 7.4-29.4 18.9-38.2C39.5 178.7 32 166.1 32 151.7zM96 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H440.6L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0h56.2c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6H144l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4H46c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L128 196.8V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM96 171.6L40.6 128H16c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM337 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [640, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .1 .5 .5 0 1 1 .9-.1z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.8 .9 4.1 1.4l0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [64, 512, [10069, 10071, 61738], \"21\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 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};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","/*!\n * Font Awesome Free 5.15.4 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 */\nvar prefix = \"fab\";\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faAcquisitionsIncorporated = {\n prefix: 'fab',\n iconName: 'acquisitions-incorporated',\n icon: [384, 512, [], \"f6af\", \"M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [512, 512, [], \"f2d5\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"]\n};\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faBehanceSquare = {\n prefix: 'fab',\n iconName: 'behance-square',\n icon: [448, 512, [], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [576, 512, [], \"f836\", \"M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [496, 512, [], \"f268\", \"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"]\n};\nvar faCloudflare = {\n prefix: 'fab',\n iconName: 'cloudflare',\n icon: [640, 512, [], \"e07d\", \"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faDailymotion = {\n prefix: 'fab',\n iconName: 'dailymotion',\n icon: [448, 512, [], \"e052\", \"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar faDeezer = {\n prefix: 'fab',\n iconName: 'deezer',\n icon: [576, 512, [], \"e077\", \"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [640, 512, [], \"f392\", \"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faDribbbleSquare = {\n prefix: 'fab',\n iconName: 'dribbble-square',\n icon: [448, 512, [], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z\"]\n};\nvar faEdgeLegacy = {\n prefix: 'fab',\n iconName: 'edge-legacy',\n icon: [512, 512, [], \"e078\", \"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [448, 512, [], \"f430\", \"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faFacebookSquare = {\n prefix: 'fab',\n iconName: 'facebook-square',\n icon: [448, 512, [], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"e007\", \"M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [], \"f2b4\", \"M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z\"]\n};\nvar faFontAwesomeAlt = {\n prefix: 'fab',\n iconName: 'font-awesome-alt',\n icon: [448, 512, [], \"f35c\", \"M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z\"]\n};\nvar faFontAwesomeFlag = {\n prefix: 'fab',\n iconName: 'font-awesome-flag',\n icon: [448, 512, [], \"f425\", \"M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fab',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faGitSquare = {\n prefix: 'fab',\n iconName: 'git-square',\n icon: [448, 512, [], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faGithubSquare = {\n prefix: 'fab',\n iconName: 'github-square',\n icon: [448, 512, [], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faGooglePay = {\n prefix: 'fab',\n iconName: 'google-pay',\n icon: [640, 512, [], \"e079\", \"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [512, 512, [], \"f2b3\", \"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"]\n};\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faGooglePlusSquare = {\n prefix: 'fab',\n iconName: 'google-plus-square',\n icon: [448, 512, [], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faGuilded = {\n prefix: 'fab',\n iconName: 'guilded',\n icon: [448, 512, [], \"e07e\", \"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = {\n prefix: 'fab',\n iconName: 'hacker-news-square',\n icon: [448, 512, [], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faHive = {\n prefix: 'fab',\n iconName: 'hive',\n icon: [512, 512, [], \"e07f\", \"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"e013\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z\"]\n};\nvar faInnosoft = {\n prefix: 'fab',\n iconName: 'innosoft',\n icon: [448, 512, [], \"e080\", \"M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faInstagramSquare = {\n prefix: 'fab',\n iconName: 'instagram-square',\n icon: [448, 512, [], \"e055\", \"M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z\"]\n};\nvar faInstalod = {\n prefix: 'fab',\n iconName: 'instalod',\n icon: [512, 512, [], \"e081\", \"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = {\n prefix: 'fab',\n iconName: 'js-square',\n icon: [448, 512, [], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faLastfmSquare = {\n prefix: 'fab',\n iconName: 'lastfm-square',\n icon: [448, 512, [], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [448, 512, [], \"f23a\", \"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\"]\n};\nvar faMediumM = {\n prefix: 'fab',\n iconName: 'medium-m',\n icon: [512, 512, [], \"f3c7\", \"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\"]\n};\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"e01a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\"]\n};\nvar faMixer = {\n prefix: 'fab',\n iconName: 'mixer',\n icon: [512, 512, [], \"e056\", \"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faOctopusDeploy = {\n prefix: 'fab',\n iconName: 'octopus-deploy',\n icon: [512, 512, [], \"e082\", \"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faOdnoklassnikiSquare = {\n prefix: 'fab',\n iconName: 'odnoklassniki-square',\n icon: [448, 512, [], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faPennyArcade = {\n prefix: 'fab',\n iconName: 'penny-arcade',\n icon: [640, 512, [], \"f704\", \"M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z\"]\n};\nvar faPerbyte = {\n prefix: 'fab',\n iconName: 'perbyte',\n icon: [448, 512, [], \"e083\", \"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faPiedPiperSquare = {\n prefix: 'fab',\n iconName: 'pied-piper-square',\n icon: [448, 512, [], \"e01e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faPinterestSquare = {\n prefix: 'fab',\n iconName: 'pinterest-square',\n icon: [448, 512, [], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faRedditSquare = {\n prefix: 'fab',\n iconName: 'reddit-square',\n icon: [448, 512, [], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faRust = {\n prefix: 'fab',\n iconName: 'rust',\n icon: [512, 512, [], \"e07a\", \"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faShopify = {\n prefix: 'fab',\n iconName: 'shopify',\n icon: [448, 512, [], \"e057\", \"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = {\n prefix: 'fab',\n iconName: 'slack-hash',\n icon: [448, 512, [], \"f3ef\", \"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [496, 512, [], \"f2ab\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSnapchatGhost = {\n prefix: 'fab',\n iconName: 'snapchat-ghost',\n icon: [512, 512, [], \"f2ac\", \"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\"]\n};\nvar faSnapchatSquare = {\n prefix: 'fab',\n iconName: 'snapchat-square',\n icon: [448, 512, [], \"f2ad\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faSteamSquare = {\n prefix: 'fab',\n iconName: 'steam-square',\n icon: [448, 512, [], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [], \"f2c6\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"]\n};\nvar faTelegramPlane = {\n prefix: 'fab',\n iconName: 'telegram-plane',\n icon: [448, 512, [], \"f3fe\", \"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faTiktok = {\n prefix: 'fab',\n iconName: 'tiktok',\n icon: [448, 512, [], \"e07b\", \"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faTumblrSquare = {\n prefix: 'fab',\n iconName: 'tumblr-square',\n icon: [448, 512, [], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faTwitterSquare = {\n prefix: 'fab',\n iconName: 'twitter-square',\n icon: [448, 512, [], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faUncharted = {\n prefix: 'fab',\n iconName: 'uncharted',\n icon: [448, 512, [], \"e084\", \"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [576, 512, [], \"e049\", \"M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z\"]\n};\nvar faUnsplash = {\n prefix: 'fab',\n iconName: 'unsplash',\n icon: [448, 512, [], \"e07c\", \"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faViadeoSquare = {\n prefix: 'fab',\n iconName: 'viadeo-square',\n icon: [448, 512, [], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faVimeoSquare = {\n prefix: 'fab',\n iconName: 'vimeo-square',\n icon: [448, 512, [], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [576, 512, [], \"f189\", \"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faWatchmanMonitoring = {\n prefix: 'fab',\n iconName: 'watchman-monitoring',\n icon: [512, 512, [], \"e087\", \"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faWhatsappSquare = {\n prefix: 'fab',\n iconName: 'whatsapp-square',\n icon: [448, 512, [], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faWodu = {\n prefix: 'fab',\n iconName: 'wodu',\n icon: [640, 512, [], \"e088\", \"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faXingSquare = {\n prefix: 'fab',\n iconName: 'xing-square',\n icon: [448, 512, [], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [512, 512, [], \"f19e\", \"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faYoutubeSquare = {\n prefix: 'fab',\n iconName: 'youtube-square',\n icon: [448, 512, [], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar _iconsCache = {\n fa500px: fa500px,\n faAccessibleIcon: faAccessibleIcon,\n faAccusoft: faAccusoft,\n faAcquisitionsIncorporated: faAcquisitionsIncorporated,\n faAdn: faAdn,\n faAdversal: faAdversal,\n faAffiliatetheme: faAffiliatetheme,\n faAirbnb: faAirbnb,\n faAlgolia: faAlgolia,\n faAlipay: faAlipay,\n faAmazon: faAmazon,\n faAmazonPay: faAmazonPay,\n faAmilia: faAmilia,\n faAndroid: faAndroid,\n faAngellist: faAngellist,\n faAngrycreative: faAngrycreative,\n faAngular: faAngular,\n faAppStore: faAppStore,\n faAppStoreIos: faAppStoreIos,\n faApper: faApper,\n faApple: faApple,\n faApplePay: faApplePay,\n faArtstation: faArtstation,\n faAsymmetrik: faAsymmetrik,\n faAtlassian: faAtlassian,\n faAudible: faAudible,\n faAutoprefixer: faAutoprefixer,\n faAvianex: faAvianex,\n faAviato: faAviato,\n faAws: faAws,\n faBandcamp: faBandcamp,\n faBattleNet: faBattleNet,\n faBehance: faBehance,\n faBehanceSquare: faBehanceSquare,\n faBimobject: faBimobject,\n faBitbucket: faBitbucket,\n faBitcoin: faBitcoin,\n faBity: faBity,\n faBlackTie: faBlackTie,\n faBlackberry: faBlackberry,\n faBlogger: faBlogger,\n faBloggerB: faBloggerB,\n faBluetooth: faBluetooth,\n faBluetoothB: faBluetoothB,\n faBootstrap: faBootstrap,\n faBtc: faBtc,\n faBuffer: faBuffer,\n faBuromobelexperte: faBuromobelexperte,\n faBuyNLarge: faBuyNLarge,\n faBuysellads: faBuysellads,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faCcAmazonPay: faCcAmazonPay,\n faCcAmex: faCcAmex,\n faCcApplePay: faCcApplePay,\n faCcDinersClub: faCcDinersClub,\n faCcDiscover: faCcDiscover,\n faCcJcb: faCcJcb,\n faCcMastercard: faCcMastercard,\n faCcPaypal: faCcPaypal,\n faCcStripe: faCcStripe,\n faCcVisa: faCcVisa,\n faCentercode: faCentercode,\n faCentos: faCentos,\n faChrome: faChrome,\n faChromecast: faChromecast,\n faCloudflare: faCloudflare,\n faCloudscale: faCloudscale,\n faCloudsmith: faCloudsmith,\n faCloudversify: faCloudversify,\n faCodepen: faCodepen,\n faCodiepie: faCodiepie,\n faConfluence: faConfluence,\n faConnectdevelop: faConnectdevelop,\n faContao: faContao,\n faCottonBureau: faCottonBureau,\n faCpanel: faCpanel,\n faCreativeCommons: faCreativeCommons,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faCriticalRole: faCriticalRole,\n faCss3: faCss3,\n faCss3Alt: faCss3Alt,\n faCuttlefish: faCuttlefish,\n faDAndD: faDAndD,\n faDAndDBeyond: faDAndDBeyond,\n faDailymotion: faDailymotion,\n faDashcube: faDashcube,\n faDeezer: faDeezer,\n faDelicious: faDelicious,\n faDeploydog: faDeploydog,\n faDeskpro: faDeskpro,\n faDev: faDev,\n faDeviantart: faDeviantart,\n faDhl: faDhl,\n faDiaspora: faDiaspora,\n faDigg: faDigg,\n faDigitalOcean: faDigitalOcean,\n faDiscord: faDiscord,\n faDiscourse: faDiscourse,\n faDochub: faDochub,\n faDocker: faDocker,\n faDraft2digital: faDraft2digital,\n faDribbble: faDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faDropbox: faDropbox,\n faDrupal: faDrupal,\n faDyalog: faDyalog,\n faEarlybirds: faEarlybirds,\n faEbay: faEbay,\n faEdge: faEdge,\n faEdgeLegacy: faEdgeLegacy,\n faElementor: faElementor,\n faEllo: faEllo,\n faEmber: faEmber,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faErlang: faErlang,\n faEthereum: faEthereum,\n faEtsy: faEtsy,\n faEvernote: faEvernote,\n faExpeditedssl: faExpeditedssl,\n faFacebook: faFacebook,\n faFacebookF: faFacebookF,\n faFacebookMessenger: faFacebookMessenger,\n faFacebookSquare: faFacebookSquare,\n faFantasyFlightGames: faFantasyFlightGames,\n faFedex: faFedex,\n faFedora: faFedora,\n faFigma: faFigma,\n faFirefox: faFirefox,\n faFirefoxBrowser: faFirefoxBrowser,\n faFirstOrder: faFirstOrder,\n faFirstOrderAlt: faFirstOrderAlt,\n faFirstdraft: faFirstdraft,\n faFlickr: faFlickr,\n faFlipboard: faFlipboard,\n faFly: faFly,\n faFontAwesome: faFontAwesome,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFonticons: faFonticons,\n faFonticonsFi: faFonticonsFi,\n faFortAwesome: faFortAwesome,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faForumbee: faForumbee,\n faFoursquare: faFoursquare,\n faFreeCodeCamp: faFreeCodeCamp,\n faFreebsd: faFreebsd,\n faFulcrum: faFulcrum,\n faGalacticRepublic: faGalacticRepublic,\n faGalacticSenate: faGalacticSenate,\n faGetPocket: faGetPocket,\n faGg: faGg,\n faGgCircle: faGgCircle,\n faGit: faGit,\n faGitAlt: faGitAlt,\n faGitSquare: faGitSquare,\n faGithub: faGithub,\n faGithubAlt: faGithubAlt,\n faGithubSquare: faGithubSquare,\n faGitkraken: faGitkraken,\n faGitlab: faGitlab,\n faGitter: faGitter,\n faGlide: faGlide,\n faGlideG: faGlideG,\n faGofore: faGofore,\n faGoodreads: faGoodreads,\n faGoodreadsG: faGoodreadsG,\n faGoogle: faGoogle,\n faGoogleDrive: faGoogleDrive,\n faGooglePay: faGooglePay,\n faGooglePlay: faGooglePlay,\n faGooglePlus: faGooglePlus,\n faGooglePlusG: faGooglePlusG,\n faGooglePlusSquare: faGooglePlusSquare,\n faGoogleWallet: faGoogleWallet,\n faGratipay: faGratipay,\n faGrav: faGrav,\n faGripfire: faGripfire,\n faGrunt: faGrunt,\n faGuilded: faGuilded,\n faGulp: faGulp,\n faHackerNews: faHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faHackerrank: faHackerrank,\n faHips: faHips,\n faHireAHelper: faHireAHelper,\n faHive: faHive,\n faHooli: faHooli,\n faHornbill: faHornbill,\n faHotjar: faHotjar,\n faHouzz: faHouzz,\n faHtml5: faHtml5,\n faHubspot: faHubspot,\n faIdeal: faIdeal,\n faImdb: faImdb,\n faInnosoft: faInnosoft,\n faInstagram: faInstagram,\n faInstagramSquare: faInstagramSquare,\n faInstalod: faInstalod,\n faIntercom: faIntercom,\n faInternetExplorer: faInternetExplorer,\n faInvision: faInvision,\n faIoxhost: faIoxhost,\n faItchIo: faItchIo,\n faItunes: faItunes,\n faItunesNote: faItunesNote,\n faJava: faJava,\n faJediOrder: faJediOrder,\n faJenkins: faJenkins,\n faJira: faJira,\n faJoget: faJoget,\n faJoomla: faJoomla,\n faJs: faJs,\n faJsSquare: faJsSquare,\n faJsfiddle: faJsfiddle,\n faKaggle: faKaggle,\n faKeybase: faKeybase,\n faKeycdn: faKeycdn,\n faKickstarter: faKickstarter,\n faKickstarterK: faKickstarterK,\n faKorvue: faKorvue,\n faLaravel: faLaravel,\n faLastfm: faLastfm,\n faLastfmSquare: faLastfmSquare,\n faLeanpub: faLeanpub,\n faLess: faLess,\n faLine: faLine,\n faLinkedin: faLinkedin,\n faLinkedinIn: faLinkedinIn,\n faLinode: faLinode,\n faLinux: faLinux,\n faLyft: faLyft,\n faMagento: faMagento,\n faMailchimp: faMailchimp,\n faMandalorian: faMandalorian,\n faMarkdown: faMarkdown,\n faMastodon: faMastodon,\n faMaxcdn: faMaxcdn,\n faMdb: faMdb,\n faMedapps: faMedapps,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faMedrt: faMedrt,\n faMeetup: faMeetup,\n faMegaport: faMegaport,\n faMendeley: faMendeley,\n faMicroblog: faMicroblog,\n faMicrosoft: faMicrosoft,\n faMix: faMix,\n faMixcloud: faMixcloud,\n faMixer: faMixer,\n faMizuni: faMizuni,\n faModx: faModx,\n faMonero: faMonero,\n faNapster: faNapster,\n faNeos: faNeos,\n faNimblr: faNimblr,\n faNode: faNode,\n faNodeJs: faNodeJs,\n faNpm: faNpm,\n faNs8: faNs8,\n faNutritionix: faNutritionix,\n faOctopusDeploy: faOctopusDeploy,\n faOdnoklassniki: faOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faOldRepublic: faOldRepublic,\n faOpencart: faOpencart,\n faOpenid: faOpenid,\n faOpera: faOpera,\n faOptinMonster: faOptinMonster,\n faOrcid: faOrcid,\n faOsi: faOsi,\n faPage4: faPage4,\n faPagelines: faPagelines,\n faPalfed: faPalfed,\n faPatreon: faPatreon,\n faPaypal: faPaypal,\n faPennyArcade: faPennyArcade,\n faPerbyte: faPerbyte,\n faPeriscope: faPeriscope,\n faPhabricator: faPhabricator,\n faPhoenixFramework: faPhoenixFramework,\n faPhoenixSquadron: faPhoenixSquadron,\n faPhp: faPhp,\n faPiedPiper: faPiedPiper,\n faPiedPiperAlt: faPiedPiperAlt,\n faPiedPiperHat: faPiedPiperHat,\n faPiedPiperPp: faPiedPiperPp,\n faPiedPiperSquare: faPiedPiperSquare,\n faPinterest: faPinterest,\n faPinterestP: faPinterestP,\n faPinterestSquare: faPinterestSquare,\n faPlaystation: faPlaystation,\n faProductHunt: faProductHunt,\n faPushed: faPushed,\n faPython: faPython,\n faQq: faQq,\n faQuinscape: faQuinscape,\n faQuora: faQuora,\n faRProject: faRProject,\n faRaspberryPi: faRaspberryPi,\n faRavelry: faRavelry,\n faReact: faReact,\n faReacteurope: faReacteurope,\n faReadme: faReadme,\n faRebel: faRebel,\n faRedRiver: faRedRiver,\n faReddit: faReddit,\n faRedditAlien: faRedditAlien,\n faRedditSquare: faRedditSquare,\n faRedhat: faRedhat,\n faRenren: faRenren,\n faReplyd: faReplyd,\n faResearchgate: faResearchgate,\n faResolving: faResolving,\n faRev: faRev,\n faRocketchat: faRocketchat,\n faRockrms: faRockrms,\n faRust: faRust,\n faSafari: faSafari,\n faSalesforce: faSalesforce,\n faSass: faSass,\n faSchlix: faSchlix,\n faScribd: faScribd,\n faSearchengin: faSearchengin,\n faSellcast: faSellcast,\n faSellsy: faSellsy,\n faServicestack: faServicestack,\n faShirtsinbulk: faShirtsinbulk,\n faShopify: faShopify,\n faShopware: faShopware,\n faSimplybuilt: faSimplybuilt,\n faSistrix: faSistrix,\n faSith: faSith,\n faSketch: faSketch,\n faSkyatlas: faSkyatlas,\n faSkype: faSkype,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faSlideshare: faSlideshare,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faSnapchatSquare: faSnapchatSquare,\n faSoundcloud: faSoundcloud,\n faSourcetree: faSourcetree,\n faSpeakap: faSpeakap,\n faSpeakerDeck: faSpeakerDeck,\n faSpotify: faSpotify,\n faSquarespace: faSquarespace,\n faStackExchange: faStackExchange,\n faStackOverflow: faStackOverflow,\n faStackpath: faStackpath,\n faStaylinked: faStaylinked,\n faSteam: faSteam,\n faSteamSquare: faSteamSquare,\n faSteamSymbol: faSteamSymbol,\n faStickerMule: faStickerMule,\n faStrava: faStrava,\n faStripe: faStripe,\n faStripeS: faStripeS,\n faStudiovinari: faStudiovinari,\n faStumbleupon: faStumbleupon,\n faStumbleuponCircle: faStumbleuponCircle,\n faSuperpowers: faSuperpowers,\n faSupple: faSupple,\n faSuse: faSuse,\n faSwift: faSwift,\n faSymfony: faSymfony,\n faTeamspeak: faTeamspeak,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faTencentWeibo: faTencentWeibo,\n faTheRedYeti: faTheRedYeti,\n faThemeco: faThemeco,\n faThemeisle: faThemeisle,\n faThinkPeaks: faThinkPeaks,\n faTiktok: faTiktok,\n faTradeFederation: faTradeFederation,\n faTrello: faTrello,\n faTumblr: faTumblr,\n faTumblrSquare: faTumblrSquare,\n faTwitch: faTwitch,\n faTwitter: faTwitter,\n faTwitterSquare: faTwitterSquare,\n faTypo3: faTypo3,\n faUber: faUber,\n faUbuntu: faUbuntu,\n faUikit: faUikit,\n faUmbraco: faUmbraco,\n faUncharted: faUncharted,\n faUniregistry: faUniregistry,\n faUnity: faUnity,\n faUnsplash: faUnsplash,\n faUntappd: faUntappd,\n faUps: faUps,\n faUsb: faUsb,\n faUsps: faUsps,\n faUssunnah: faUssunnah,\n faVaadin: faVaadin,\n faViacoin: faViacoin,\n faViadeo: faViadeo,\n faViadeoSquare: faViadeoSquare,\n faViber: faViber,\n faVimeo: faVimeo,\n faVimeoSquare: faVimeoSquare,\n faVimeoV: faVimeoV,\n faVine: faVine,\n faVk: faVk,\n faVnv: faVnv,\n faVuejs: faVuejs,\n faWatchmanMonitoring: faWatchmanMonitoring,\n faWaze: faWaze,\n faWeebly: faWeebly,\n faWeibo: faWeibo,\n faWeixin: faWeixin,\n faWhatsapp: faWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faWhmcs: faWhmcs,\n faWikipediaW: faWikipediaW,\n faWindows: faWindows,\n faWix: faWix,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faWodu: faWodu,\n faWolfPackBattalion: faWolfPackBattalion,\n faWordpress: faWordpress,\n faWordpressSimple: faWordpressSimple,\n faWpbeginner: faWpbeginner,\n faWpexplorer: faWpexplorer,\n faWpforms: faWpforms,\n faWpressr: faWpressr,\n faXbox: faXbox,\n faXing: faXing,\n faXingSquare: faXingSquare,\n faYCombinator: faYCombinator,\n faYahoo: faYahoo,\n faYammer: faYammer,\n faYandex: faYandex,\n faYandexInternational: faYandexInternational,\n faYarn: faYarn,\n faYelp: faYelp,\n faYoast: faYoast,\n faYoutube: faYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faZhihu: faZhihu\n};\n\nexport { _iconsCache as fab, prefix, fa500px, faAccessibleIcon, faAccusoft, faAcquisitionsIncorporated, faAdn, faAdversal, faAffiliatetheme, faAirbnb, faAlgolia, faAlipay, faAmazon, faAmazonPay, faAmilia, faAndroid, faAngellist, faAngrycreative, faAngular, faAppStore, faAppStoreIos, faApper, faApple, faApplePay, faArtstation, faAsymmetrik, faAtlassian, faAudible, faAutoprefixer, faAvianex, faAviato, faAws, faBandcamp, faBattleNet, faBehance, faBehanceSquare, faBimobject, faBitbucket, faBitcoin, faBity, faBlackTie, faBlackberry, faBlogger, faBloggerB, faBluetooth, faBluetoothB, faBootstrap, faBtc, faBuffer, faBuromobelexperte, faBuyNLarge, faBuysellads, faCanadianMapleLeaf, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faCentercode, faCentos, faChrome, faChromecast, faCloudflare, faCloudscale, faCloudsmith, faCloudversify, faCodepen, faCodiepie, faConfluence, faConnectdevelop, faContao, faCottonBureau, faCpanel, faCreativeCommons, faCreativeCommonsBy, faCreativeCommonsNc, faCreativeCommonsNcEu, faCreativeCommonsNcJp, faCreativeCommonsNd, faCreativeCommonsPd, faCreativeCommonsPdAlt, faCreativeCommonsRemix, faCreativeCommonsSa, faCreativeCommonsSampling, faCreativeCommonsSamplingPlus, faCreativeCommonsShare, faCreativeCommonsZero, faCriticalRole, faCss3, faCss3Alt, faCuttlefish, faDAndD, faDAndDBeyond, faDailymotion, faDashcube, faDeezer, faDelicious, faDeploydog, faDeskpro, faDev, faDeviantart, faDhl, faDiaspora, faDigg, faDigitalOcean, faDiscord, faDiscourse, faDochub, faDocker, faDraft2digital, faDribbble, faDribbbleSquare, faDropbox, faDrupal, faDyalog, faEarlybirds, faEbay, faEdge, faEdgeLegacy, faElementor, faEllo, faEmber, faEmpire, faEnvira, faErlang, faEthereum, faEtsy, faEvernote, faExpeditedssl, faFacebook, faFacebookF, faFacebookMessenger, faFacebookSquare, faFantasyFlightGames, faFedex, faFedora, faFigma, faFirefox, faFirefoxBrowser, faFirstOrder, faFirstOrderAlt, faFirstdraft, faFlickr, faFlipboard, faFly, faFontAwesome, faFontAwesomeAlt, faFontAwesomeFlag, faFontAwesomeLogoFull, faFonticons, faFonticonsFi, faFortAwesome, faFortAwesomeAlt, faForumbee, faFoursquare, faFreeCodeCamp, faFreebsd, faFulcrum, faGalacticRepublic, faGalacticSenate, faGetPocket, faGg, faGgCircle, faGit, faGitAlt, faGitSquare, faGithub, faGithubAlt, faGithubSquare, faGitkraken, faGitlab, faGitter, faGlide, faGlideG, faGofore, faGoodreads, faGoodreadsG, faGoogle, faGoogleDrive, faGooglePay, faGooglePlay, faGooglePlus, faGooglePlusG, faGooglePlusSquare, faGoogleWallet, faGratipay, faGrav, faGripfire, faGrunt, faGuilded, faGulp, faHackerNews, faHackerNewsSquare, faHackerrank, faHips, faHireAHelper, faHive, faHooli, faHornbill, faHotjar, faHouzz, faHtml5, faHubspot, faIdeal, faImdb, faInnosoft, faInstagram, faInstagramSquare, faInstalod, faIntercom, faInternetExplorer, faInvision, faIoxhost, faItchIo, faItunes, faItunesNote, faJava, faJediOrder, faJenkins, faJira, faJoget, faJoomla, faJs, faJsSquare, faJsfiddle, faKaggle, faKeybase, faKeycdn, faKickstarter, faKickstarterK, faKorvue, faLaravel, faLastfm, faLastfmSquare, faLeanpub, faLess, faLine, faLinkedin, faLinkedinIn, faLinode, faLinux, faLyft, faMagento, faMailchimp, faMandalorian, faMarkdown, faMastodon, faMaxcdn, faMdb, faMedapps, faMedium, faMediumM, faMedrt, faMeetup, faMegaport, faMendeley, faMicroblog, faMicrosoft, faMix, faMixcloud, faMixer, faMizuni, faModx, faMonero, faNapster, faNeos, faNimblr, faNode, faNodeJs, faNpm, faNs8, faNutritionix, faOctopusDeploy, faOdnoklassniki, faOdnoklassnikiSquare, faOldRepublic, faOpencart, faOpenid, faOpera, faOptinMonster, faOrcid, faOsi, faPage4, faPagelines, faPalfed, faPatreon, faPaypal, faPennyArcade, faPerbyte, faPeriscope, faPhabricator, faPhoenixFramework, faPhoenixSquadron, faPhp, faPiedPiper, faPiedPiperAlt, faPiedPiperHat, faPiedPiperPp, faPiedPiperSquare, faPinterest, faPinterestP, faPinterestSquare, faPlaystation, faProductHunt, faPushed, faPython, faQq, faQuinscape, faQuora, faRProject, faRaspberryPi, faRavelry, faReact, faReacteurope, faReadme, faRebel, faRedRiver, faReddit, faRedditAlien, faRedditSquare, faRedhat, faRenren, faReplyd, faResearchgate, faResolving, faRev, faRocketchat, faRockrms, faRust, faSafari, faSalesforce, faSass, faSchlix, faScribd, faSearchengin, faSellcast, faSellsy, faServicestack, faShirtsinbulk, faShopify, faShopware, faSimplybuilt, faSistrix, faSith, faSketch, faSkyatlas, faSkype, faSlack, faSlackHash, faSlideshare, faSnapchat, faSnapchatGhost, faSnapchatSquare, faSoundcloud, faSourcetree, faSpeakap, faSpeakerDeck, faSpotify, faSquarespace, faStackExchange, faStackOverflow, faStackpath, faStaylinked, faSteam, faSteamSquare, faSteamSymbol, faStickerMule, faStrava, faStripe, faStripeS, faStudiovinari, faStumbleupon, faStumbleuponCircle, faSuperpowers, faSupple, faSuse, faSwift, faSymfony, faTeamspeak, faTelegram, faTelegramPlane, faTencentWeibo, faTheRedYeti, faThemeco, faThemeisle, faThinkPeaks, faTiktok, faTradeFederation, faTrello, faTumblr, faTumblrSquare, faTwitch, faTwitter, faTwitterSquare, faTypo3, faUber, faUbuntu, faUikit, faUmbraco, faUncharted, faUniregistry, faUnity, faUnsplash, faUntappd, faUps, faUsb, faUsps, faUssunnah, faVaadin, faViacoin, faViadeo, faViadeoSquare, faViber, faVimeo, faVimeoSquare, faVimeoV, faVine, faVk, faVnv, faVuejs, faWatchmanMonitoring, faWaze, faWeebly, faWeibo, faWeixin, faWhatsapp, faWhatsappSquare, faWhmcs, faWikipediaW, faWindows, faWix, faWizardsOfTheCoast, faWodu, faWolfPackBattalion, faWordpress, faWordpressSimple, faWpbeginner, faWpexplorer, faWpforms, faWpressr, faXbox, faXing, faXingSquare, faYCombinator, faYahoo, faYammer, faYandex, faYandexInternational, faYarn, faYelp, faYoast, faYoutube, faYoutubeSquare, faZhihu };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","var _path;\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); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: \"bi bi-soundwave\",\n fill: \"currentColor\",\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5zm-2 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zm-6 1.5A.5.5 0 0 1 5 6v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm8 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm-10 1A.5.5 0 0 1 3 7v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5zm12 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5z\",\n fill: \"#073462\",\n fillRule: \"evenodd\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.79acfa2ca71752b80ee3a18f2c669707.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Fragment } from 'react';\nimport { NavbarBrand } from 'reactstrap';\nimport logoSvg from '../../logo.svg';\n\nconst EdgeMLBrandLogo = ({ href }) => {\n console.log(window.location.host);\n if (window.location.host === 'edge-ml-beta.dmz.teco.edu') {\n return (\n \n
\n \n
\n \n
edge-ml
\n \n Beta\n
\n \n
\n \n \n );\n }\n\n return (\n \n
\n \n \n
edge-ml
\n
\n
\n \n );\n};\n\nexport default EdgeMLBrandLogo;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"size\", \"color\", \"children\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n size: PropTypes.string,\n color: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.string\n};\nvar defaultProps = {\n tag: 'div',\n type: 'border',\n children: 'Loading...'\n};\n\nvar Spinner = function Spinner(props) {\n var className = props.className,\n cssModule = props.cssModule,\n type = props.type,\n size = props.size,\n color = props.color,\n children = props.children,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, size ? \"spinner-\" + type + \"-\" + size : false, \"spinner-\" + type, color ? \"text-\" + color : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n role: \"status\"\n }, attributes, {\n className: classes\n }), children && /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('sr-only', cssModule)\n }, children));\n};\n\nSpinner.propTypes = propTypes;\nSpinner.defaultProps = defaultProps;\nexport default Spinner;","import apiConsts from './ApiConstants';\nimport ax from 'axios';\n\nconst axios = ax.create();\n\nexport const getDatasets = () => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS\n )\n )\n .then((result) => {\n console.log(result);\n resolve(result.data);\n })\n .catch((err) => {\n console.log(err.response);\n reject(err.response);\n });\n });\n};\n\nexport const getDatasetsWithPagination = (\n currentPage,\n pageSize,\n sort,\n selectedFilter,\n selectedFilterParams\n) => {\n const queryParams = {\n page: currentPage,\n page_size: pageSize,\n sort: sort,\n };\n const requestBody = {\n filters: {},\n };\n\n if (selectedFilter) {\n requestBody.filters[selectedFilter.value] = selectedFilterParams\n ? selectedFilterParams\n : [];\n }\n const request = apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS_VIEW,\n requestBody\n );\n request.params = queryParams;\n return new Promise((resolve, reject) => {\n axios(request)\n .then((result) => {\n console.log(result);\n resolve(result.data);\n })\n .catch((err) => {\n console.log(err.response);\n reject(err.response);\n });\n });\n};\n\nexport const getDatasetTimeseries = (id, info) => {\n console.log(info);\n const { max_resolution, start, end } = info;\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS +\n `${id}/ts/${start}/${end}/${max_resolution}`\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getTimeSeriesDataPartial = (id, ts_ids, info) => {\n console.log(info);\n console.log(ts_ids);\n console.log('Get time series partial');\n const { max_resolution, start, end } = info;\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS +\n `${id}/ts/${start}/${end}/${max_resolution}`,\n ts_ids\n )\n )\n .then((data) => resolve(data.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getDataset = (id) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS + `${id}`\n )\n )\n .then((dataset) => resolve(dataset.data))\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getDatasetMeta = (id) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS + `${id}`\n )\n )\n .then((dataset) => {\n console.log(dataset);\n resolve(dataset.data);\n })\n .catch((err) => {\n console.log(err);\n reject(err.response);\n });\n });\n};\n\nexport const getDatasetLock = (id) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.DATASETS_CAN_EDIT + `/${id}`\n )\n )\n .then((lock) => {\n resolve(lock.data ? lock.data.canEdit : undefined);\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const deleteDatasets = (ids) => {\n try {\n const promises = ids.map((elm) => deleteDataset(elm));\n return Promise.all(promises);\n } catch (e) {\n console.log(e);\n return e;\n }\n};\n\nexport const deleteDataset = (id) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.DELETE,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS + `${id}`\n )\n )\n .then(resolve())\n .catch((err) => reject(err.response));\n });\n};\n\nexport const updateDataset = (dataset) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS + `${dataset['_id']}`,\n dataset\n )\n )\n .then((updatedDataset) => {\n resolve(updatedDataset.data);\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const createDataset = (dataset) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS,\n dataset\n )\n )\n .then(() => {\n getDatasets().then((datasets) => {\n resolve(datasets);\n });\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const createDatasets = (datasets) => {\n return new Promise((resolve, reject) => {\n const promises = datasets.map((dataset) =>\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS,\n dataset\n )\n )\n );\n Promise.all(promises)\n .then(() => {\n getDatasets().then((datasets) => {\n resolve(datasets);\n });\n })\n .catch((err) => {\n console.log(err);\n reject(err.response);\n });\n });\n};\n\nexport const appendToDataset = (dataset, data) => {\n return axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS +\n `${dataset['_id']}` +\n '/append',\n data\n )\n )\n .then((result) => result.data)\n .catch((err) => err.response);\n};\n\nexport const getUploadProcessingProgress = (datasetId) => {\n return axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.GET_PROCESSING_PROGRESS +\n `?datasetId=${datasetId}`\n )\n )\n .then((result) => result.data.progress)\n .catch((err) => err.response);\n};\n\nexport const changeDatasetName = (datasetId, newName) => {\n return axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS +\n datasetId +\n `/rename?newName=${newName}`\n )\n )\n .then((result) => result.data.message)\n .catch((err) => err.response);\n};\n\nexport const updateTimeSeriesConfig = (\n datasetId,\n tsId,\n unit,\n scaling,\n offset\n) => {\n return axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.DATASETS +\n datasetId +\n `/changeUnitConfig?tsId=${tsId}&unit=${unit}&scaling=${scaling}&offset=${offset}`\n )\n )\n .then((result) => result.data.message)\n .catch((err) => err.response);\n};\n","import * as JSZip from 'jszip';\nimport { generateCSV } from './CsvService';\nimport { getDataset } from '../services/ApiServices/DatasetServices';\nimport {\n generateApiRequest,\n HTTP_METHODS,\n DATASET_STORE,\n DATASET_STORE_ENDPOINTS,\n} from './ApiServices/ApiConstants';\nimport ax from 'axios';\n\nconst axios = ax.create();\n\nconst registerDatasetDownload = async (dataset) => {\n const request_params = generateApiRequest(\n HTTP_METHODS.POST,\n DATASET_STORE,\n DATASET_STORE_ENDPOINTS.CSV + `dataset/${dataset._id}`\n );\n const response = await axios(request_params);\n return response.data;\n};\n\nconst registerProjectDownload = async () => {\n const request_params = generateApiRequest(\n HTTP_METHODS.POST,\n DATASET_STORE,\n DATASET_STORE_ENDPOINTS.CSV + 'project'\n );\n const response = await axios(request_params);\n return response.data;\n};\n\nconst datasetDownloadStatus = async () => {\n try {\n const request_params = generateApiRequest(\n HTTP_METHODS.GET,\n DATASET_STORE,\n DATASET_STORE_ENDPOINTS.CSV + 'status/'\n );\n const response = await axios(request_params);\n return response.data;\n } catch {\n return 404;\n }\n};\n\nconst cancelDownload = async (downloadId) => {\n try {\n const request_params = generateApiRequest(\n HTTP_METHODS.DELETE,\n DATASET_STORE,\n DATASET_STORE_ENDPOINTS.CSV + `${downloadId}`\n );\n const response = await axios(request_params);\n return response.data;\n } catch {\n return 404;\n }\n};\n\nconst datasetDownloadfromId = async (downloadId) => {\n window.open(`${DATASET_STORE}${DATASET_STORE_ENDPOINTS.CSV}${downloadId}`);\n};\n\nconst downloadAllAsZip = async (datasets, labelings, labels) => {\n const zip = new JSZip();\n\n var nameCtr = {};\n var names = [];\n datasets.forEach((elm) => {\n const ctr = nameCtr[elm.name] || 0;\n const nameExt = ctr === 0 ? '' : '_' + ctr;\n names.push(elm.name + nameExt);\n nameCtr[elm.name] = ctr + 1;\n });\n\n await Promise.all(\n datasets.map(async (elm, idx) => {\n const dataset = await getDataset(elm._id);\n const csv = generateCSV(dataset, labelings, labels);\n const json = JSON.stringify(dataset.metaData);\n const csv_fileName = names[idx] + '.csv';\n const json_fileName = names[idx] + '_metaData.json';\n const blob_dataset = new Blob([csv], { type: 'application/csv' });\n const blob_metaData = new Blob([json], { type: 'application/json' });\n zip.file(csv_fileName, blob_dataset);\n if (Object.keys(dataset.metaData).length !== 0) {\n zip.file(json_fileName, blob_metaData);\n }\n })\n );\n const zip_blob = await zip.generateAsync({ type: 'blob' });\n downloadFile(zip_blob, 'datasets.zip');\n};\n\nconst downloadFile = (blob, fileName) => {\n const href = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = href;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nexport {\n registerDatasetDownload,\n datasetDownloadfromId,\n downloadAllAsZip,\n downloadFile,\n datasetDownloadStatus,\n registerProjectDownload,\n cancelDownload,\n};\n","import React, { createContext, useState, useEffect, useRef } from 'react';\nimport {\n downloadDatasetsRegister,\n datasetDownloadStatus,\n cancelDownload,\n registerDatasetDownload as reg_dataset_download,\n registerProjectDownload as reg_project_download,\n} from '../../services/DatasetService';\n\nconst NotificationContext = createContext();\n\nexport const NotificationProvider = ({ children }) => {\n const [activeNotifications, setActiveNotifications] = useState([]);\n const [hasNewNotifications, setHasNewNotifications] = useState(true); // Flag variable\n const updateHandle = useRef(null);\n\n const registerProjectDownload = async () => {\n const res = await reg_project_download();\n console.log(res);\n setActiveNotifications((prevState) => [...prevState, res]);\n setHasNewNotifications(true);\n startUpdates();\n };\n\n const registerDatasetDownload = async (datasetId) => {\n const res = await reg_dataset_download(datasetId);\n console.log(res);\n setActiveNotifications((prevState) => [...prevState, res]);\n setHasNewNotifications(true);\n startUpdates();\n };\n\n const removeNotification = (id) => {\n const newNotifications = activeNotifications.filter(\n (elm) => elm.downloadId !== id\n );\n cancelDownload(id);\n setActiveNotifications(newNotifications);\n };\n\n const updateNotifications = async () => {\n const notifications = await datasetDownloadStatus();\n console.log(notifications);\n if (notifications >= 400) {\n setHasNewNotifications(false);\n return;\n }\n setActiveNotifications(notifications);\n const uncompletedNotifications =\n notifications.map((elm) => elm.status).filter((elm) => elm != 100) > 0;\n console.log(!uncompletedNotifications || notifications.length === 0);\n console.log(uncompletedNotifications, notifications);\n if (!uncompletedNotifications || notifications.length === 0) {\n stopUpdates();\n }\n setHasNewNotifications(uncompletedNotifications); // Update the flag\n };\n\n const startUpdates = () => {\n console.log('Starting updates');\n if (updateHandle.current === null) {\n const handle = setInterval(updateNotifications, 2000);\n updateHandle.current = handle;\n }\n };\n\n const stopUpdates = () => {\n console.log('Stopping updates');\n clearInterval(updateHandle.current);\n updateHandle.current = null;\n };\n\n useEffect(() => {\n startUpdates();\n return () => stopUpdates();\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport default NotificationContext;\n","import React, { Fragment } from 'react';\n\nconst EdgeMLTable = ({ children, className, style }) => {\n const header = React.Children.toArray(children).find(\n (child) => child.type === EdgeMLTableHeader\n );\n console.log(React.Children.toArray(children));\n const body = React.Children.toArray(children)\n .filter((elm) => elm.type === EdgeMLTableEntry)\n .map((child, index) => {\n return React.cloneElement(child, { index });\n });\n\n return (\n
\n
\n {header}\n
\n \n {body}\n
\n \n );\n};\n\nconst EdgeMLTableHeader = ({ children }) => {\n return <>{children};\n};\n\nconst EdgeMLTableEntry = ({ children, index, className }) => {\n return (\n \n \n {children}\n \n \n );\n};\n\nexport { EdgeMLTable, EdgeMLTableHeader, EdgeMLTableEntry };\n","import {\n Badge,\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n Spinner,\n Col,\n Row,\n} from 'reactstrap';\nimport NotificationContext from '../NotificationHandler/NotificationProvider';\nimport { useContext, useEffect } from 'react';\nimport { datasetDownloadfromId } from '../../services/DatasetService';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faDownload,\n faTrash,\n faTrashAlt,\n faXmark,\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n EdgeMLTable,\n EdgeMLTableEntry,\n EdgeMLTableHeader,\n} from '../Common/EdgeMLTable';\n\nconst NotificationHandler = ({ onClose, isOpen }) => {\n const { activeNotifications, removeNotification } =\n useContext(NotificationContext);\n\n useEffect(() => {\n if (activeNotifications.length <= 0) {\n onClose();\n }\n }, [activeNotifications]);\n\n return (\n \n Notifications\n \n {/* {console.log(activeNotifications)}\n {activeNotifications.map((elm, idx) => (\n \n \n
\n {elm.datasetName ? elm.datasetName : elm.projectName}\n
\n {elm.datasetName\n ? '(Dataset in project ' + elm.projectName + ')'\n : '(Project)'}\n
\n
\n \n \n {elm.error ?
Error
: null}\n {elm.status < 100 ? (\n
\n \n
{elm.status}%
\n
\n ) : (\n
\n {console.log(elm)}\n {elm.error ? null : (\n datasetDownloadfromId(elm.downloadId)}\n >\n Download\n \n )}\n
\n )}\n \n \n removeNotification(elm.downloadId)}\n color=\"danger\"\n >\n \n \n \n
\n ))} */}\n\n \n Downloads\n {activeNotifications.map((elm, idx) => {\n return (\n \n
\n
\n {elm.datasetName ? elm.datasetName : elm.projectName}\n
\n {elm.datasetName\n ? '(Dataset in project ' + elm.projectName + ')'\n : '(Project)'}\n
\n
\n
\n {elm.error ?
Error
: null}\n {elm.status < 100 ? (\n
\n \n
{elm.status}%
\n
\n ) : (\n
\n {console.log(elm)}\n {elm.error ? null : (\n \n datasetDownloadfromId(elm.downloadId)\n }\n >\n \n \n )}\n
\n )}\n
\n removeNotification(elm.downloadId)}\n color=\"danger\"\n >\n \n \n
\n
\n
\n
\n );\n })}\n
\n
\n \n \n \n
\n );\n};\n\nexport default NotificationHandler;\n","import LogoTeco from '../../assets/teco_logo.png';\nimport LogoKIT from '../../assets/KITlogo_4c_englisch.png';\n\nexport const TECOLogo = (props) => {\n return ;\n};\nexport const KITLogo = (props) => {\n return ;\n};\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"cssModule\", \"children\", \"isOpen\", \"flip\", \"target\", \"offset\", \"fallbackPlacement\", \"placementPrefix\", \"arrowClassName\", \"hideArrow\", \"popperClassName\", \"tag\", \"container\", \"modifiers\", \"positionFixed\", \"boundariesElement\", \"onClosed\", \"fade\", \"transition\", \"placement\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper as ReactPopper } from 'react-popper';\nimport { getTarget, targetPropType, mapToCssModules, DOMElement, tagPropType } from './utils';\nimport Fade from './Fade';\n\nfunction noop() {}\n\nvar propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n popperClassName: PropTypes.string,\n placement: PropTypes.string,\n placementPrefix: PropTypes.string,\n arrowClassName: PropTypes.string,\n hideArrow: PropTypes.bool,\n tag: tagPropType,\n isOpen: PropTypes.bool.isRequired,\n cssModule: PropTypes.object,\n offset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fallbackPlacement: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n flip: PropTypes.bool,\n container: targetPropType,\n target: targetPropType.isRequired,\n modifiers: PropTypes.object,\n positionFixed: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n onClosed: PropTypes.func,\n fade: PropTypes.bool,\n transition: PropTypes.shape(Fade.propTypes)\n};\nvar defaultProps = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {},\n onClosed: noop,\n fade: true,\n transition: _objectSpread({}, Fade.defaultProps)\n};\n\nvar PopperContent = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(PopperContent, _React$Component);\n\n function PopperContent(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.setTargetNode = _this.setTargetNode.bind(_assertThisInitialized(_this));\n _this.getTargetNode = _this.getTargetNode.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n return _this;\n }\n\n PopperContent.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n var _proto = PopperContent.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (this._element && this._element.childNodes && this._element.childNodes[0] && this._element.childNodes[0].focus) {\n this._element.childNodes[0].focus();\n }\n };\n\n _proto.setTargetNode = function setTargetNode(node) {\n this.targetNode = typeof node === 'string' ? getTarget(node) : node;\n };\n\n _proto.getTargetNode = function getTargetNode() {\n return this.targetNode;\n };\n\n _proto.getContainerNode = function getContainerNode() {\n return getTarget(this.props.container);\n };\n\n _proto.getRef = function getRef(ref) {\n this._element = ref;\n };\n\n _proto.onClosed = function onClosed() {\n this.props.onClosed();\n this.setState({\n isOpen: false\n });\n };\n\n _proto.renderChildren = function renderChildren() {\n var _this$props = this.props,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n isOpen = _this$props.isOpen,\n flip = _this$props.flip,\n target = _this$props.target,\n offset = _this$props.offset,\n fallbackPlacement = _this$props.fallbackPlacement,\n placementPrefix = _this$props.placementPrefix,\n _arrowClassName = _this$props.arrowClassName,\n hideArrow = _this$props.hideArrow,\n _popperClassName = _this$props.popperClassName,\n tag = _this$props.tag,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n boundariesElement = _this$props.boundariesElement,\n onClosed = _this$props.onClosed,\n fade = _this$props.fade,\n transition = _this$props.transition,\n placement = _this$props.placement,\n attrs = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var arrowClassName = mapToCssModules(classNames('arrow', _arrowClassName), cssModule);\n var popperClassName = mapToCssModules(classNames(_popperClassName, placementPrefix ? placementPrefix + \"-auto\" : ''), this.props.cssModule);\n\n var extendedModifiers = _objectSpread({\n offset: {\n offset: offset\n },\n flip: {\n enabled: flip,\n behavior: fallbackPlacement\n },\n preventOverflow: {\n boundariesElement: boundariesElement\n }\n }, modifiers);\n\n var popperTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n\n return /*#__PURE__*/React.createElement(Fade, _extends({}, popperTransition, attrs, {\n in: isOpen,\n onExited: this.onClosed,\n tag: tag\n }), /*#__PURE__*/React.createElement(ReactPopper, {\n referenceElement: this.targetNode,\n modifiers: extendedModifiers,\n placement: placement,\n positionFixed: positionFixed\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement,\n outOfBoundaries = _ref.outOfBoundaries,\n arrowProps = _ref.arrowProps,\n scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n style: style,\n className: popperClassName,\n \"x-placement\": placement,\n \"x-out-of-boundaries\": outOfBoundaries ? 'true' : undefined\n }, typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children, !hideArrow && /*#__PURE__*/React.createElement(\"span\", {\n ref: arrowProps.ref,\n className: arrowClassName,\n style: arrowProps.style\n }));\n }));\n };\n\n _proto.render = function render() {\n this.setTargetNode(this.props.target);\n\n if (this.state.isOpen) {\n return this.props.container === 'inline' ? this.renderChildren() : /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(\"div\", {\n ref: this.getRef\n }, this.renderChildren()), this.getContainerNode());\n }\n\n return null;\n };\n\n return PopperContent;\n}(React.Component);\n\nPopperContent.propTypes = propTypes;\nPopperContent.defaultProps = defaultProps;\nexport default PopperContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperContent from './PopperContent';\nimport { getTarget, targetPropType, omit, PopperPlacements, mapToCssModules, DOMElement } from './utils';\nexport var propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n placement: PropTypes.oneOf(PopperPlacements),\n target: targetPropType.isRequired,\n container: targetPropType,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n hideArrow: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n className: PropTypes.string,\n innerClassName: PropTypes.string,\n arrowClassName: PropTypes.string,\n popperClassName: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.func,\n autohide: PropTypes.bool,\n placementPrefix: PropTypes.string,\n delay: PropTypes.oneOfType([PropTypes.shape({\n show: PropTypes.number,\n hide: PropTypes.number\n }), PropTypes.number]),\n modifiers: PropTypes.object,\n positionFixed: PropTypes.bool,\n offset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object]),\n trigger: PropTypes.string,\n fade: PropTypes.bool,\n flip: PropTypes.bool\n};\nvar DEFAULT_DELAYS = {\n show: 0,\n hide: 50\n};\nvar defaultProps = {\n isOpen: false,\n hideArrow: false,\n autohide: false,\n delay: DEFAULT_DELAYS,\n toggle: function toggle() {},\n trigger: 'click',\n fade: true\n};\n\nfunction isInDOMSubtree(element, subtreeRoot) {\n return subtreeRoot && (element === subtreeRoot || subtreeRoot.contains(element));\n}\n\nfunction isInDOMSubtrees(element, subtreeRoots) {\n if (subtreeRoots === void 0) {\n subtreeRoots = [];\n }\n\n return subtreeRoots && subtreeRoots.length && subtreeRoots.filter(function (subTreeRoot) {\n return isInDOMSubtree(element, subTreeRoot);\n })[0];\n}\n\nvar TooltipPopoverWrapper = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TooltipPopoverWrapper, _React$Component);\n\n function TooltipPopoverWrapper(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._targets = [];\n _this.currentTargetElement = null;\n _this.addTargetEvents = _this.addTargetEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.removeTargetEvents = _this.removeTargetEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.showWithDelay = _this.showWithDelay.bind(_assertThisInitialized(_this));\n _this.hideWithDelay = _this.hideWithDelay.bind(_assertThisInitialized(_this));\n _this.onMouseOverTooltipContent = _this.onMouseOverTooltipContent.bind(_assertThisInitialized(_this));\n _this.onMouseLeaveTooltipContent = _this.onMouseLeaveTooltipContent.bind(_assertThisInitialized(_this));\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.onEscKeyDown = _this.onEscKeyDown.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n _this._isMounted = false;\n return _this;\n }\n\n var _proto = TooltipPopoverWrapper.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.updateTarget();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this.removeTargetEvents();\n this._targets = null;\n this.clearShowTimeout();\n this.clearHideTimeout();\n };\n\n TooltipPopoverWrapper.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n _proto.onMouseOverTooltipContent = function onMouseOverTooltipContent() {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.state.isOpen && !this.props.isOpen) {\n this.toggle();\n }\n }\n };\n\n _proto.onMouseLeaveTooltipContent = function onMouseLeaveTooltipContent(e) {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n e.persist();\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n };\n\n _proto.onEscKeyDown = function onEscKeyDown(e) {\n if (e.key === 'Escape') {\n this.hide(e);\n }\n };\n\n _proto.getRef = function getRef(ref) {\n var innerRef = this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(ref);\n } else if (typeof innerRef === 'object') {\n innerRef.current = ref;\n }\n }\n\n this._popover = ref;\n };\n\n _proto.getDelay = function getDelay(key) {\n var delay = this.props.delay;\n\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay;\n };\n\n _proto.getCurrentTarget = function getCurrentTarget(target) {\n if (!target) return null;\n\n var index = this._targets.indexOf(target);\n\n if (index >= 0) return this._targets[index];\n return this.getCurrentTarget(target.parentElement);\n };\n\n _proto.show = function show(e) {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.currentTargetElement = e ? e.currentTarget || this.getCurrentTarget(e.target) : null;\n\n if (e && e.composedPath && typeof e.composedPath === 'function') {\n var path = e.composedPath();\n this.currentTargetElement = path && path[0] || this.currentTargetElement;\n }\n\n this.toggle(e);\n }\n };\n\n _proto.showWithDelay = function showWithDelay(e) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n this._showTimeout = setTimeout(this.show.bind(this, e), this.getDelay('show'));\n };\n\n _proto.hide = function hide(e) {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.currentTargetElement = null;\n this.toggle(e);\n }\n };\n\n _proto.hideWithDelay = function hideWithDelay(e) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n };\n\n _proto.clearShowTimeout = function clearShowTimeout() {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n };\n\n _proto.clearHideTimeout = function clearHideTimeout() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n };\n\n _proto.handleDocumentClick = function handleDocumentClick(e) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('legacy') > -1 && (this.props.isOpen || isInDOMSubtrees(e.target, this._targets))) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.props.isOpen && !isInDOMSubtree(e.target, this._popover)) {\n this.hideWithDelay(e);\n } else if (!this.props.isOpen) {\n this.showWithDelay(e);\n }\n } else if (triggers.indexOf('click') > -1 && isInDOMSubtrees(e.target, this._targets)) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.showWithDelay(e);\n } else {\n this.hideWithDelay(e);\n }\n }\n };\n\n _proto.addEventOnTargets = function addEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.addEventListener(type, handler, isBubble);\n });\n };\n\n _proto.removeEventOnTargets = function removeEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.removeEventListener(type, handler, isBubble);\n });\n };\n\n _proto.addTargetEvents = function addTargetEvents() {\n if (this.props.trigger) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('manual') === -1) {\n if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {\n document.addEventListener('click', this.handleDocumentClick, true);\n }\n\n if (this._targets && this._targets.length) {\n if (triggers.indexOf('hover') > -1) {\n this.addEventOnTargets('mouseover', this.showWithDelay, true);\n this.addEventOnTargets('mouseout', this.hideWithDelay, true);\n }\n\n if (triggers.indexOf('focus') > -1) {\n this.addEventOnTargets('focusin', this.show, true);\n this.addEventOnTargets('focusout', this.hide, true);\n }\n\n this.addEventOnTargets('keydown', this.onEscKeyDown, true);\n }\n }\n }\n };\n\n _proto.removeTargetEvents = function removeTargetEvents() {\n if (this._targets) {\n this.removeEventOnTargets('mouseover', this.showWithDelay, true);\n this.removeEventOnTargets('mouseout', this.hideWithDelay, true);\n this.removeEventOnTargets('keydown', this.onEscKeyDown, true);\n this.removeEventOnTargets('focusin', this.show, true);\n this.removeEventOnTargets('focusout', this.hide, true);\n }\n\n document.removeEventListener('click', this.handleDocumentClick, true);\n };\n\n _proto.updateTarget = function updateTarget() {\n var newTarget = getTarget(this.props.target, true);\n\n if (newTarget !== this._targets) {\n this.removeTargetEvents();\n this._targets = newTarget ? Array.from(newTarget) : [];\n this.currentTargetElement = this.currentTargetElement || this._targets[0];\n this.addTargetEvents();\n }\n };\n\n _proto.toggle = function toggle(e) {\n if (this.props.disabled || !this._isMounted) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.isOpen) {\n this.updateTarget();\n }\n\n var target = this.currentTargetElement || this._targets[0];\n\n if (!target) {\n return null;\n }\n\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n innerClassName = _this$props.innerClassName,\n isOpen = _this$props.isOpen,\n hideArrow = _this$props.hideArrow,\n boundariesElement = _this$props.boundariesElement,\n placement = _this$props.placement,\n placementPrefix = _this$props.placementPrefix,\n arrowClassName = _this$props.arrowClassName,\n popperClassName = _this$props.popperClassName,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n offset = _this$props.offset,\n fade = _this$props.fade,\n flip = _this$props.flip,\n children = _this$props.children;\n var attributes = omit(this.props, Object.keys(propTypes));\n var popperClasses = mapToCssModules(popperClassName, cssModule);\n var classes = mapToCssModules(innerClassName, cssModule);\n return /*#__PURE__*/React.createElement(PopperContent, {\n className: className,\n target: target,\n isOpen: isOpen,\n hideArrow: hideArrow,\n boundariesElement: boundariesElement,\n placement: placement,\n placementPrefix: placementPrefix,\n arrowClassName: arrowClassName,\n popperClassName: popperClasses,\n container: container,\n modifiers: modifiers,\n positionFixed: positionFixed,\n offset: offset,\n cssModule: cssModule,\n fade: fade,\n flip: flip\n }, function (_ref) {\n var scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n ref: _this2.getRef,\n className: classes,\n role: \"tooltip\",\n onMouseOver: _this2.onMouseOverTooltipContent,\n onMouseLeave: _this2.onMouseLeaveTooltipContent,\n onKeyDown: _this2.onEscKeyDown\n }), typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children);\n });\n };\n\n return TooltipPopoverWrapper;\n}(React.Component);\n\nTooltipPopoverWrapper.propTypes = propTypes;\nTooltipPopoverWrapper.defaultProps = defaultProps;\nexport default TooltipPopoverWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport TooltipPopoverWrapper, { propTypes } from './TooltipPopoverWrapper';\nvar defaultProps = {\n placement: 'right',\n placementPrefix: 'bs-popover',\n trigger: 'click'\n};\n\nvar Popover = function Popover(props) {\n var popperClasses = classNames('popover', 'show', props.popperClassName);\n var classes = classNames('popover-inner', props.innerClassName);\n return /*#__PURE__*/React.createElement(TooltipPopoverWrapper, _extends({}, props, {\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n};\n\nPopover.propTypes = propTypes;\nPopover.defaultProps = defaultProps;\nexport default Popover;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar PopoverBody = function PopoverBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'popover-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nPopoverBody.propTypes = propTypes;\nPopoverBody.defaultProps = defaultProps;\nexport default PopoverBody;","import React, { useState, useEffect, useContext } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport UserSettingsModal from '../UserSettingsModal/UserSettingsModal';\nimport {\n faCaretDown,\n faCaretRight,\n faPlus,\n faUser,\n faDatabase,\n faCogs,\n faPen,\n faLightbulb,\n faMicrochip,\n faDownload,\n} from '@fortawesome/free-solid-svg-icons';\n\nimport { faGithub } from '@fortawesome/free-brands-svg-icons';\n\nimport './Navbar.css';\nimport EdgeMLBrandLogo from '../EdgeMLBrandLogo/EdgeMLBrandLogo';\nimport NotificationHandler from '../NotificationHandler';\nimport NotificationContext from '../NotificationHandler/NotificationProvider';\nimport { KITLogo, TECOLogo } from '../Common/logos';\nimport {\n PopoverBody,\n PopoverHeader,\n UncontrolledPopover,\n Button,\n Popover,\n} from 'reactstrap';\n\nconst navbarProjectId = (id) => `navbar-project-${id}`;\n\nconst Navbar = (props) => {\n const [userSettingsModalOpen, setUserSettingsModalOpen] = useState(false);\n const [notificationModalOpen, setNotificationModalOpen] = useState(false);\n const [userPopoverOpen, setUserPopoverOpen] = useState(false);\n\n const { activeNotifications } = useContext(NotificationContext);\n\n const toggleUserPopOver = () => {\n setUserPopoverOpen(!userPopoverOpen);\n };\n\n const getNavBarItemClasses = (location) => {\n const project = props.projects.filter(\n (x) => x._id === props.currentProjectId\n )[0];\n const isSelected =\n props.location.pathname.toLowerCase() ===\n (\n '/' +\n project.admin.userName +\n '/' +\n project.name +\n '/' +\n location\n ).toLowerCase();\n return (\n 'pt-2 pb-2 pl-4 small ' +\n (isSelected ? 'navbar-project-item-active' : 'navbar-project-item')\n );\n };\n\n const scrollProjectIntoView = () => {\n const project = props.projects.find(\n (x) => x._id === props.currentProjectId\n );\n\n if (project) {\n const element = document.getElementById(navbarProjectId(project._id));\n if (element) {\n element.scrollIntoView({ inline: 'nearest', block: 'nearest' });\n }\n }\n };\n\n const toggleUserSettingsModal = () => {\n setUserSettingsModalOpen(!userSettingsModalOpen);\n };\n\n const toggleNotificationModal = () => {\n setNotificationModalOpen(!notificationModalOpen);\n };\n\n useEffect(() => {\n scrollProjectIntoView();\n }, [props.currentProjectId]);\n\n return (\n \n \n \n
\n {props.projects.map((project, index) => {\n return (\n \n props.onProjectClick(project._id)}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n \n \n {project.name}\n
\n \n {props.currentProjectId === project._id ? (\n
\n {[\n ['Datasets', faDatabase],\n ['Labelings', faPen],\n // ['Model', faBrain],\n ['Models', faMicrochip],\n ['Settings', faCogs],\n ].map((elm, index) => (\n {\n props.navigateTo(elm[0]);\n }}\n className={getNavBarItemClasses(elm[0])}\n >\n \n {elm[0]}\n
\n ))}\n \n ) : null}\n \n );\n })}\n \n\n props.onProjectEditModal(true)}\n className=\"w-100 mt-3 pt-2 pb-2 navbar-project text-center\"\n style={{\n backgroundColor: '#eee',\n border: '0px solid transparent',\n color: '#666',\n fontSize: '0.9rem',\n cursor: 'pointer',\n }}\n >\n \n Add Project\n \n \n
\n\n
\n {activeNotifications.length > 0 ? (\n \n \n \n {`${activeNotifications.length} ${\n activeNotifications.length > 1\n ? 'Notifications'\n : 'Notification'\n }`}\n \n
\n ) : null}\n \n window.open('https://github.com/edge-ml/edge-ml/issues', '_blank')\n }\n >\n \n \n Report a bug\n \n \n \n window.open('https://github.com/edge-ml/edge-ml/wiki', '_blank')\n }\n >\n \n \n Documentation\n \n \n
\n
\n Open source from\n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n \n \n
\n
\n \n Settings\n \n
\n
\n \n Logout\n \n
\n
\n
\n \n \n \n \n {props.userName}\n \n \n props.onLogout(true)}\n enable2FA={props.enable2FA}\n userMail={props.userMail}\n >\n setNotificationModalOpen(false)}\n isOpen={notificationModalOpen}\n >\n \n );\n};\n\nexport default Navbar;\n","import React from 'react';\nimport EdgeMLBrandLogo from '../EdgeMLBrandLogo/EdgeMLBrandLogo';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faBars, faTimes } from '@fortawesome/free-solid-svg-icons';\n\nimport './MobileHeader.css';\n\nconst MobileHeader = ({\n onMenuButton = () => {},\n mobileNavbarShown,\n projectAvailable,\n}) => (\n
\n
\n \n
\n \n
\n);\n\nexport default MobileHeader;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"className\", \"closeClassName\", \"closeAriaLabel\", \"cssModule\", \"tag\", \"color\", \"isOpen\", \"toggle\", \"children\", \"transition\", \"fade\", \"innerRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Fade from './Fade';\nvar propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n closeClassName: PropTypes.string,\n closeAriaLabel: PropTypes.string,\n cssModule: PropTypes.object,\n color: PropTypes.string,\n fade: PropTypes.bool,\n isOpen: PropTypes.bool,\n toggle: PropTypes.func,\n tag: tagPropType,\n transition: PropTypes.shape(Fade.propTypes),\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n color: 'success',\n isOpen: true,\n tag: 'div',\n closeAriaLabel: 'Close',\n fade: true,\n transition: _objectSpread(_objectSpread({}, Fade.defaultProps), {}, {\n unmountOnExit: true\n })\n};\n\nfunction Alert(props) {\n var className = props.className,\n closeClassName = props.closeClassName,\n closeAriaLabel = props.closeAriaLabel,\n cssModule = props.cssModule,\n Tag = props.tag,\n color = props.color,\n isOpen = props.isOpen,\n toggle = props.toggle,\n children = props.children,\n transition = props.transition,\n fade = props.fade,\n innerRef = props.innerRef,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'alert', \"alert-\" + color, {\n 'alert-dismissible': toggle\n }), cssModule);\n var closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);\n\n var alertTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n\n return /*#__PURE__*/React.createElement(Fade, _extends({}, attributes, alertTransition, {\n tag: Tag,\n className: classes,\n in: isOpen,\n role: \"alert\",\n innerRef: innerRef\n }), toggle ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: closeClasses,\n \"aria-label\": closeAriaLabel,\n onClick: toggle\n }, /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\")) : null, children);\n}\n\nAlert.propTypes = propTypes;\nAlert.defaultProps = defaultProps;\nexport default Alert;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\", \"widths\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType\n};\nvar defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n widths = props.widths,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\" + colSize : \"row-cols-\" + colWidth + \"-\" + colSize);\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"color\", \"body\", \"inverse\", \"outline\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n inverse: PropTypes.bool,\n color: PropTypes.string,\n body: PropTypes.bool,\n outline: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Card = function Card(props) {\n var className = props.className,\n cssModule = props.cssModule,\n color = props.color,\n body = props.body,\n inverse = props.inverse,\n outline = props.outline,\n Tag = props.tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card', inverse ? 'text-white' : false, body ? 'card-body' : false, color ? (outline ? 'border' : 'bg') + \"-\" + color : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n};\n\nCard.propTypes = propTypes;\nCard.defaultProps = defaultProps;\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardHeader = function CardHeader(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-header'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCardHeader.propTypes = propTypes;\nCardHeader.defaultProps = defaultProps;\nexport default CardHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"innerRef\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardBody = function CardBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n innerRef = props.innerRef,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n};\n\nCardBody.propTypes = propTypes;\nCardBody.defaultProps = defaultProps;\nexport default CardBody;","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import React, { Component } from 'react';\nimport {\n Container,\n Col,\n Row,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Button,\n Card,\n CardBody,\n CardHeader,\n Alert,\n} from 'reactstrap';\nimport { getServerTime } from '../services/helpers.js';\nimport {\n loginUser,\n loginUserRefresh,\n verify2FA,\n} from '../services/ApiServices/AuthentificationServices';\nimport jwt_decode from 'jwt-decode';\n\nimport {\n getAccessToken,\n getRefreshToken,\n setToken,\n} from '../services/LocalStorageService';\nimport EdgeMLBrandLogo from '../components/EdgeMLBrandLogo/EdgeMLBrandLogo.js';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faShield, faUser } from '@fortawesome/free-solid-svg-icons';\n\nclass LoginPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n userMail: '',\n password: '',\n token: '',\n buttonDisabled: false,\n isLoggedIn: false,\n time: undefined,\n loginFailed: false,\n show2FA: false,\n };\n this.baseState = JSON.parse(JSON.stringify(this.state));\n this.emailChange = this.emailChange.bind(this);\n this.passChange = this.passChange.bind(this);\n this.submit = this.submit.bind(this);\n this.onTokenChanged = this.onTokenChanged.bind(this);\n this.onLoginCanceled = this.onLoginCanceled.bind(this);\n this.passHandleKey = this.passHandleKey.bind(this);\n this.tick = this.tick.bind(this);\n this.checkLoggedInStatus = this.checkLoggedInStatus.bind(this);\n this.onLoginError = this.onLoginError.bind(this);\n this.register = this.register.bind(this);\n this.refreshThreshold = 5 * 60 * 1000 + 10 * 1000; // 5 minutes + 10 seconds offset\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.isLoggedIn !== this.props.isLoggedIn) {\n const tmpBase = this.baseState;\n tmpBase.isLoggedIn = this.props.isLoggedIn;\n this.setState(tmpBase);\n }\n }\n\n checkLoggedInStatus() {\n const accessToken = getAccessToken();\n const refreshToken = getRefreshToken();\n if (accessToken) {\n const decoded = jwt_decode(accessToken);\n if (\n decoded.exp * 1000 >= Date.now() &&\n !(decoded.twoFactorEnabled && !decoded.twoFactorVerified)\n ) {\n this.props.onUserLoggedIn(\n accessToken,\n refreshToken,\n decoded.email,\n decoded.twoFactorEnabled,\n decoded.userName,\n );\n this.setState({\n isLoggedIn: true,\n });\n }\n }\n // check whether the access token expires in 5 minutes and 10 seconds\n if (\n refreshToken &&\n jwt_decode(accessToken).exp * 1000 - Date.now() <= this.refreshThreshold\n ) {\n loginUserRefresh(refreshToken)\n .then((res) => {\n const refreshedAccessToken = 'Bearer ' + res.access_token;\n const decoded = jwt_decode(refreshedAccessToken);\n console.log(refreshedAccessToken);\n setToken(refreshedAccessToken, refreshToken);\n this.props.onUserLoggedIn(\n refreshedAccessToken,\n refreshToken,\n decoded.email,\n decoded.twoFactorEnabled,\n decoded.userName,\n decoded.subscriptionLevel,\n );\n })\n .catch((err) => {\n console.log(err);\n });\n return;\n }\n }\n\n emailChange(event) {\n this.setState({\n userMail: event.target.value,\n });\n }\n\n passChange(event) {\n this.setState({\n password: event.target.value,\n });\n }\n\n passHandleKey(event) {\n if (event.keyCode === 13) {\n this.submit();\n }\n }\n\n onTokenChanged(e) {\n this.setState({\n token: e.target.value,\n });\n if (!e.target || !e.target.value) return;\n if (e.target.value.length === 6) {\n verify2FA(e.target.value)\n .then((data) => {\n if (data.isTwoFactorAuthenticated) {\n this.props.onUserLoggedIn(data.access_token, data.refresh_token);\n this.setState({\n isLoggedIn: true,\n });\n }\n })\n .catch((err) => {\n this.onLoginError();\n });\n }\n }\n\n onLoginCanceled() {\n this.setState(this.baseState);\n }\n\n submit() {\n this.setState({ buttonDisabled: true });\n loginUser(this.state.userMail, this.state.password)\n .then((data) => {\n const decoded = jwt_decode(data.access_token);\n setToken(data.access_token, data.refresh_token);\n if (!data.twoFactorEnabled) {\n this.props.onUserLoggedIn(\n data.access_token,\n data.refresh_token,\n decoded.email,\n decoded.twoFactorEnabled,\n decoded.userName,\n );\n this.setState({\n isLoggedIn: true,\n buttonDisabled: false,\n password: '',\n userMail: '',\n });\n } else {\n this.setState({\n show2FA: true,\n });\n }\n })\n .catch((err) => {\n console.log('Error');\n console.log(err);\n this.onLoginError();\n });\n }\n\n register() {\n window.location.href = './register';\n }\n\n onLoginError() {\n this.setState(\n {\n loginFailed: true,\n },\n () => {\n //Wait for animation to stop then reset page\n setTimeout(() => {\n this.setState({\n loginFailed: false,\n buttonDisabled: false,\n password: '',\n token: '',\n });\n }, 300);\n },\n );\n }\n\n componentDidMount() {\n this.checkLoggedInStatus();\n getServerTime()\n .then((serverTime) => this.setState({ time: serverTime }))\n .catch((err) => {});\n this.interval = setInterval(this.tick, 1000);\n this.checkLoggedInInterval = setInterval(\n () => {\n this.checkLoggedInStatus();\n },\n this.refreshThreshold - 10 * 1000,\n ); // check every 5 minutes\n }\n\n componentWillUnmount() {\n clearInterval(this.interval);\n }\n\n tick() {\n let time = new Date(this.state.time);\n\n if (time) {\n time.setSeconds(time.getSeconds() + 1);\n this.setState({ time });\n }\n }\n\n render() {\n if (this.state.isLoggedIn) {\n return this.props.children;\n } else {\n return (\n \n \n \n \n
\n \n
\n \n
\n \n );\n }\n }\n}\nexport default LoginPage;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n row: PropTypes.bool,\n check: PropTypes.bool,\n inline: PropTypes.bool,\n disabled: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar FormGroup = function FormGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n row = props.row,\n disabled = props.disabled,\n check = props.check,\n inline = props.inline,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, row ? 'row' : false, check ? 'form-check' : 'form-group', check && inline ? 'form-check-inline' : false, check && disabled ? 'disabled' : false), cssModule);\n\n if (Tag === 'fieldset') {\n attributes.disabled = disabled;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nFormGroup.propTypes = propTypes;\nFormGroup.defaultProps = defaultProps;\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"hidden\", \"widths\", \"tag\", \"check\", \"size\", \"for\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.shape({\n size: stringOrNumberProp,\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n children: PropTypes.node,\n hidden: PropTypes.bool,\n check: PropTypes.bool,\n size: PropTypes.string,\n for: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'label',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Label = function Label(props) {\n var className = props.className,\n cssModule = props.cssModule,\n hidden = props.hidden,\n widths = props.widths,\n Tag = props.tag,\n check = props.check,\n size = props.size,\n htmlFor = props.for,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n var colClass;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames))), cssModule);\n } else {\n colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(colClass);\n }\n });\n var classes = mapToCssModules(classNames(className, hidden ? 'sr-only' : false, check ? 'form-check-label' : false, size ? \"col-form-label-\" + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n htmlFor: htmlFor\n }, attributes, {\n className: classes\n }));\n};\n\nLabel.propTypes = propTypes;\nLabel.defaultProps = defaultProps;\nexport default Label;","import React, { Component } from 'react';\nimport {\n Container,\n Col,\n Row,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Button,\n Card,\n CardBody,\n CardHeader,\n FormGroup,\n Label,\n} from 'reactstrap';\nimport { registerNewUser } from '../services/ApiServices/AuthentificationServices';\nimport { clearToken } from '../services/LocalStorageService';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faEnvelope,\n faExclamationTriangle,\n faShield,\n faUser,\n} from '@fortawesome/free-solid-svg-icons';\nimport { validateEmail } from '../services/helpers';\nimport EdgeMLBrandLogo from '../components/EdgeMLBrandLogo/EdgeMLBrandLogo';\n\nclass RegisterPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n email: '',\n password: '',\n passwordRepeat: '',\n userName: '',\n ToS_accepted: false,\n error: '',\n };\n this.onEMailChanged = this.onEMailChanged.bind(this);\n this.onPasswordChanged = this.onPasswordChanged.bind(this);\n this.onPasswordRepeatChanged = this.onPasswordRepeatChanged.bind(this);\n this.onError = this.onError.bind(this);\n this.onToS_checked = this.onToS_checked.bind(this);\n this.onRegisterClick = this.onRegisterClick.bind(this);\n this.onUserNameChanged = this.onUserNameChanged.bind(this);\n }\n\n onUserNameChanged(e) {\n this.setState({\n userName: e.target.value,\n });\n }\n\n onEMailChanged(e) {\n this.setState({\n email: e.target.value,\n });\n }\n\n onPasswordChanged(e) {\n this.setState({\n password: e.target.value,\n });\n }\n\n onPasswordRepeatChanged(e) {\n this.setState({\n passwordRepeat: e.target.value,\n });\n }\n\n onError(err) {\n if (err.includes('email_1 dup key')) {\n err = 'E-Mail already exists';\n }\n\n if (err.includes('userName_1 dup key')) {\n err = 'Username already exists';\n }\n\n this.setState({\n error: err,\n });\n }\n\n onToS_checked() {\n this.setState({\n ToS_accepted: !this.state.ToS_accepted,\n });\n }\n\n onRegisterClick() {\n if (!validateEmail(this.state.email)) {\n this.onError('Enter a valid E-mail');\n } else if (this.state.password === '') {\n this.onError('Enter a password');\n } else if (this.state.password !== this.state.passwordRepeat) {\n this.onError('The passwords have to match');\n } else {\n registerNewUser(\n this.state.email,\n this.state.password,\n this.state.userName,\n )\n .then(() => {\n clearToken();\n this.setState({\n error: '',\n });\n this.props.history.push({\n pathname: '/',\n search: '',\n });\n })\n .catch((err) => {\n this.onError(err);\n });\n }\n }\n\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\nexport default RegisterPage;\n","import apiConsts from './ApiConstants';\nimport ax from 'axios';\nimport { getUserIds } from '../ApiServices/AuthentificationServices';\n\nconst axios = ax.create();\n\nexport const getProjects = () => {\n return new Promise((resolve, reject) => {\n console.log(apiConsts.API_URI);\n console.log(apiConsts.API_ENDPOINTS.PROJECTS);\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS\n )\n )\n .then((result) => {\n resolve(result.data);\n })\n .catch((err) => {\n reject(err.response ? err.response.status : undefined);\n });\n });\n};\n\nexport const createProject = (project) => {\n return new Promise((resolve, reject) => {\n const tmpProject = project;\n getUserIds(project.users.map((elm) => elm.userName)).then((userData) => {\n tmpProject.users = userData;\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS,\n project\n )\n )\n .then(() => {\n getProjects().then((data) => resolve(data));\n })\n .catch((err) => {\n reject(err.response.data.error);\n });\n });\n });\n};\n\nexport const updateProject = (project) => {\n return new Promise((resolve, reject) => {\n const tmpProject = project;\n getUserIds(project.users.map((elm) => elm.userName))\n .then((userData) => {\n tmpProject.users = userData;\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS + `/${project['_id']}`,\n project\n )\n )\n .then(() => {\n getProjects().then((data) => resolve(data));\n })\n .catch((err) => {\n reject(err.response.data.error);\n });\n })\n .catch((err) => {\n reject(err.data.error);\n });\n });\n};\n\nexport const deleteProject = (project) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.DELETE,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS + `/${project['_id']}`\n )\n )\n .then(() => {\n getProjects().then((data) => resolve(data));\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const leaveProject = (project) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS + `/${project['_id']}` + '/leave'\n )\n )\n .then(() => {\n getProjects().then((data) => resolve(data));\n })\n .catch((err) => reject(err.response));\n });\n};\n\nexport const getProjectSensorStreams = (project) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS + `/${project['_id']}/sensorStreams`\n )\n ).then((x) => {\n resolve(x['data'].sensorStreams);\n });\n });\n};\n\nexport const getProjectCustomMetaData = (project) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.API_URI,\n apiConsts.API_ENDPOINTS.PROJECTS + `/${project['_id']}/customMetaData`\n )\n ).then((x) => {\n resolve(x['data']);\n });\n });\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"size\", \"bordered\", \"borderless\", \"striped\", \"dark\", \"hover\", \"responsive\", \"tag\", \"responsiveTag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n className: PropTypes.string,\n cssModule: PropTypes.object,\n size: PropTypes.string,\n bordered: PropTypes.bool,\n borderless: PropTypes.bool,\n striped: PropTypes.bool,\n dark: PropTypes.bool,\n hover: PropTypes.bool,\n responsive: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n tag: tagPropType,\n responsiveTag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object])\n};\nvar defaultProps = {\n tag: 'table',\n responsiveTag: 'div'\n};\n\nvar Table = function Table(props) {\n var className = props.className,\n cssModule = props.cssModule,\n size = props.size,\n bordered = props.bordered,\n borderless = props.borderless,\n striped = props.striped,\n dark = props.dark,\n hover = props.hover,\n responsive = props.responsive,\n Tag = props.tag,\n ResponsiveTag = props.responsiveTag,\n innerRef = props.innerRef,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'table', size ? 'table-' + size : false, bordered ? 'table-bordered' : false, borderless ? 'table-borderless' : false, striped ? 'table-striped' : false, dark ? 'table-dark' : false, hover ? 'table-hover' : false), cssModule);\n var table = /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n\n if (responsive) {\n var responsiveClassName = mapToCssModules(responsive === true ? 'table-responsive' : \"table-responsive-\" + responsive, cssModule);\n return /*#__PURE__*/React.createElement(ResponsiveTag, {\n className: responsiveClassName\n }, table);\n }\n\n return table;\n};\n\nTable.propTypes = propTypes;\nTable.defaultProps = defaultProps;\nexport default Table;","import React, { Component } from 'react';\nimport { Input } from 'reactstrap';\nimport { betterModulo } from '../../services/helpers';\n\nimport './AutocompleteInput.css';\n\nclass AutocompleteInput extends Component {\n constructor(props) {\n super(props);\n this.state = {\n suggestions: [],\n menuOpen: false,\n selectedIndex: -1,\n };\n this.onInputChange = this.onInputChange.bind(this);\n this.onItemClick = this.onItemClick.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onMouseOver = this.onMouseOver.bind(this);\n }\n\n onInputChange(e) {\n if (e.target.value === '') {\n this.closeMenu();\n }\n if (this.props.getsuggestions && e.target.value !== '') {\n this.props\n .getsuggestions(e.target.value)\n .then((data) => {\n let newData = data;\n if (this.props.filter) {\n newData = data.filter((elm) => !this.props.filter.includes(elm));\n }\n this.setState({\n suggestions: newData.slice(0, 5), // Show top 5 results\n });\n this.openMenu();\n })\n .catch((err) => {\n console.log(err);\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n }\n\n openMenu() {\n this.setState({ menuOpen: true }, () => {\n document.addEventListener('click', this.closeMenu);\n document.addEventListener('keydown', this.onKeyDown);\n });\n }\n\n closeMenu() {\n this.setState({ menuOpen: false }, () => {\n document.removeEventListener('click', this.closeMenu);\n document.removeEventListener('keydown', this.onKeyDown);\n });\n }\n\n onMouseOver(e, index) {\n this.setState({\n selectedIndex: index,\n });\n }\n\n onKeyDown(e) {\n var selectedIndex = 0;\n if (this.state.suggestions.length !== 0) {\n switch (e.key) {\n case 'ArrowDown':\n selectedIndex = betterModulo(\n this.state.selectedIndex + 1,\n this.state.suggestions.length\n );\n break;\n case 'ArrowUp':\n selectedIndex = betterModulo(\n this.state.selectedIndex - 1,\n this.state.suggestions.length\n );\n break;\n case 'Enter':\n const newEvent = e;\n newEvent.target.value =\n this.state.suggestions[this.state.selectedIndex];\n this.props.onClick && this.props.onClick(newEvent);\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n if (e.key === 'Escape') {\n this.closeMenu();\n return;\n }\n this.setState({\n selectedIndex: selectedIndex,\n });\n }\n\n onItemClick(e, index) {\n const newEvent = e;\n newEvent.target.value = this.state.suggestions[index];\n this.props.onClick && this.props.onClick(newEvent);\n this.closeMenu();\n e.preventDefault();\n }\n\n render() {\n const inputProps = { ...this.props, getsuggestions: undefined };\n return (\n
\n e.preventDefault()}\n >\n {this.state.menuOpen ? (\n
\n {this.state.suggestions.map((item, index) => {\n return (\n this.onMouseOver(e, index)}\n onClick={(e) => this.onItemClick(e, index)}\n className={\n index === this.state.selectedIndex\n ? 'autocomplete-button select'\n : 'autocomplete-button'\n }\n >\n {item}\n
\n );\n })}\n {this.state.suggestions.length === 0 ? (\n
No results
\n ) : null}\n
\n ) : null}\n \n );\n }\n}\n\nexport default AutocompleteInput;\n","import React, { Component } from 'react';\nimport {\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n Button,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Input,\n Table,\n Col,\n Row,\n} from 'reactstrap';\n\nimport {\n updateProject,\n createProject,\n} from './../../services/ApiServices/ProjectService';\n\nimport AutoCompleteInput from '../../components/AutoCompleteInput/AutocompleteInput';\nimport { getUserNameSuggestions } from '../../services/ApiServices/AuthentificationServices';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTrash } from '@fortawesome/free-solid-svg-icons';\n\nimport './EditProjectModal.css';\n\nclass EditProjectModal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: undefined,\n userSearchValue: '',\n originalProject: undefined,\n project: undefined,\n originalUsers: [],\n };\n this.onNameChanged = this.onNameChanged.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onCancel = this.onCancel.bind(this);\n this.onUserNameChange = this.onUserNameChange.bind(this);\n this.generateTableEntry = this.generateTableEntry.bind(this);\n this.onAddUserName = this.onAddUserName.bind(this);\n this.deleteUserName = this.deleteUserName.bind(this);\n this.onChangeUserNameSuggestion =\n this.onChangeUserNameSuggestion.bind(this);\n }\n\n onChangeUserNameSuggestion(e) {\n this.setState({\n userSearchValue: e.target.value,\n });\n }\n\n deleteUserName(userName) {\n const project = this.state.project;\n project.users = project.users.filter((elm) => elm.userName !== userName);\n this.setState({\n project: project,\n });\n }\n\n onAddUserName(e) {\n e.preventDefault();\n const project = this.state.project;\n project.users.push({ userName: e.target.value });\n this.setState({\n project: project,\n userSearchValue: '',\n });\n }\n\n onUserNameChange(e, index) {\n e.preventDefault();\n const project = { ...this.state.project };\n project.users[index].userName = e.target.value;\n this.setState({\n project: project,\n });\n }\n\n onSave() {\n if (this.props.isNewProject) {\n createProject(this.state.project)\n .then((data) => {\n const projectIndex = data.findIndex(\n (elm) => elm.name === this.state.project.name,\n );\n console.log(data);\n console.log(projectIndex);\n this.props.projectChanged(data, projectIndex);\n this.setState({ error: undefined });\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n error: err,\n });\n });\n } else {\n updateProject(this.state.project)\n .then((data) => {\n this.props.projectChanged(data);\n })\n .catch((err) => {\n console.log(err);\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const newProject = { name: '', users: [] };\n this.setState({\n project: newProject,\n });\n }\n\n onNameChanged(newName) {\n var tmpProject = { ...this.state.project };\n tmpProject.name = newName;\n this.setState({\n project: tmpProject,\n });\n }\n\n onCancel() {\n this.setState(\n {\n error: undefined,\n originalProject: undefined,\n project: undefined,\n originalUsers: [],\n },\n () => {\n this.props.onClose();\n },\n );\n }\n\n generateTableEntry(userName, index) {\n return (\n \n \n {index + 1}\n \n {userName}\n \n this.deleteUserName(userName)}\n >\n \n \n \n \n );\n }\n\n render() {\n if (\n !this.state.project ||\n !this.state.project.users ||\n !this.props.isNewProject\n )\n return null;\n return (\n \n \n {this.props.isNewProject\n ? 'Create new Project'\n : 'Edit Project: ' + this.state.originalProject.name}\n \n \n \n \n {'Name'}\n \n this.onNameChanged(e.target.value)}\n />\n \n \n \n {'Admin'}\n \n \n \n {this.props.isNewProject ? null : (\n \n \n {'Admin'}\n \n \n \n )}\n
Users
\n\n \n Search users: \n \n elm.userName),\n this.props.userName,\n ]}\n >\n \n \n \n \n \n \n \n \n \n \n \n {this.state.project.users.map((elm, index) =>\n this.generateTableEntry(elm.userName, index),\n )}\n \n
#UserNameDelete
\n
\n \n \n Save\n {' '}\n
{this.state.error}
\n \n Cancel\n \n
\n
\n );\n }\n}\nexport default EditProjectModal;\n","import React from 'react';\nimport { Spinner } from 'reactstrap';\n\nconst Loader = (props) => {\n console.log(props.loading);\n \n if (props.loading) {\n return (\n \n \n \n );\n } else {\n return props.children;\n }\n};\n\nexport default Loader;\n\nexport const withLoader = (pred, Wrapped) => (props) => (\n \n {pred(props) ? : null}\n \n);\n","import apiConsts from './ApiConstants';\nimport ax from 'axios';\n\nconst axios = ax.create();\n\nexport const subscribeLabelingsAndLabels = () => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.GET,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.LABELING\n )\n )\n .then((result) => {\n console.log(result.data);\n resolve(result.data);\n })\n .catch((err) => console.log(err));\n });\n};\n\nexport const addLabeling = (newLabeling) => {\n console.log(newLabeling);\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.LABELING,\n newLabeling\n )\n )\n .then(() => {\n subscribeLabelingsAndLabels().then((data) => resolve(data));\n })\n .catch((err) => console.log(err));\n });\n};\n\nexport const deleteLabeling = (labelingId, conflictingDatasetIds) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.DELETE,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.LABELING + `${labelingId}`\n )\n ).then(() => {\n subscribeLabelingsAndLabels()\n .then((data) => resolve(data))\n .catch((err) => console.log(err));\n });\n });\n};\n\nexport const deleteMultipleLabelings = (labelingIds) => {\n return new Promise((resolve, reject) => {\n Promise.all(\n labelingIds.map((id) =>\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.DELETE,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.LABELING + `${id}`\n )\n )\n )\n ).then(() => {\n subscribeLabelingsAndLabels()\n .then((data) => resolve(data))\n .catch((err) => console.log(err));\n });\n });\n};\n\nexport const updateLabelingandLabels = (labeling, labels) => {\n return new Promise((resolve, reject) => {\n axios(\n apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.PUT,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.LABELING + `${labeling['_id']}`,\n labeling\n )\n )\n .then(() => {\n subscribeLabelingsAndLabels()\n .then((data) => resolve(data))\n .catch((err) => console.log(err));\n })\n .catch((err) => window.alert(err));\n });\n};\n\n// export const addLabelTypesToLabeling = (labeling, labels) => {\n// return new Promise((resolve, reject) => {\n// axios(\n// apiConsts.generateApiRequest(\n// apiConsts.HTTP_METHODS.POST,\n// apiConsts.API_URI,\n// apiConsts.API_ENDPOINTS.LABEL_DEFINITIONS +\n// `/${labeling['_id']}` +\n// '/createlabeltypes',\n// labels.filter((elm) => elm.isNewLabel)\n// )\n// ).then(() => {\n// subscribeLabelingsAndLabels()\n// .then((data) => resolve(data))\n// .catch((err) => console.log(err));\n// });\n// });\n// };\n\n// export const deleteLabelTypesFromLabeling = (labeling, labels) => {\n// return new Promise((resolve, reject) => {\n// axios(\n// apiConsts.generateApiRequest(\n// apiConsts.HTTP_METHODS.POST,\n// apiConsts.API_URI,\n// apiConsts.API_ENDPOINTS.LABEL_DEFINITIONS +\n// `/${labeling['_id']}` +\n// '/deletelabeltypes',\n// labels\n// )\n// ).then(() => {\n// subscribeLabelingsAndLabels()\n// .then((data) => resolve(data))\n// .catch((err) => console.log(err));\n// });\n// });\n// };\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\n\nimport './Checkbox.css';\n\nconst Checkbox = (props) => {\n const size = props.size || '20px';\n const disabled = props.disabled || false;\n var onClick = props.onClick;\n if (!props.onClick) {\n onClick = () => {};\n }\n return (\n \n onClick(e)}\n type=\"checkbox\"\n disabled={disabled}\n checked={props.isSelected}\n >\n \n \n \n \n );\n};\n\nexport default Checkbox;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"color\", \"innerRef\", \"pill\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n color: PropTypes.string,\n pill: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n color: 'secondary',\n pill: false,\n tag: 'span'\n};\n\nvar Badge = function Badge(props) {\n var className = props.className,\n cssModule = props.cssModule,\n color = props.color,\n innerRef = props.innerRef,\n pill = props.pill,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'badge', 'badge-' + color, pill ? 'badge-pill' : false), cssModule);\n\n if (attributes.href && Tag === 'span') {\n Tag = 'a';\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n};\n\nBadge.propTypes = propTypes;\nBadge.defaultProps = defaultProps;\nexport default Badge;","export const generateRandomColor = () => {\n var letters = '0123456789ABCDEF';\n var color = '#';\n for (var i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n};\n\nexport const hexToRgb = hex => {\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n }\n : null;\n};\n\nexport const hexToForegroundColor = hex => {\n let color = hexToRgb(hex);\n if (!color) return '#000000';\n\n if (color.r * 0.299 + color.g * 0.587 + color.b * 0.114 > 186) {\n return '#000000';\n } else {\n return '#ffffff';\n }\n};\n\nexport const isValidColor = color => {\n return /(^#[0-9A-F]{6}$)/i.test(color);\n};\n","import { Badge } from 'reactstrap';\nimport {\n hexToForegroundColor,\n isValidColor,\n} from '../../services/ColorService';\n\nconst LabelBadge = ({ color, children, ...props }) => {\n // if (!isValidColor(color)) {\n // throw new Error('Invalid color provided');\n // }\n return (\n \n {children}\n \n );\n};\n\nexport default LabelBadge;\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faAngleRight,\n faCross,\n faEllipsisV,\n faExclamationTriangle,\n faEye,\n faInfoCircle,\n faList,\n faPen,\n faPenAlt,\n faQuestion,\n faTimes,\n faTrash,\n faTrashAlt,\n} from '@fortawesome/free-solid-svg-icons';\n\nimport React, { Fragment, useState } from 'react';\nimport { Badge, Button, Col, Row } from 'reactstrap';\n\nimport { useHistory } from 'react-router-dom';\nimport classNames from 'classnames';\n\nimport Checkbox from '../../components/Common/Checkbox';\nimport { hexToRgb } from '../../services/ColorService';\nimport { displayTime } from '../../services/helpers';\nimport LabelBadge from '../../components/Common/LabelBadge';\n\n// s as unix timestamp in milliseconds\nconst format_time = (s) => {\n const seconds = s / 1000;\n\n // Calculate the number of minutes and seconds from the remaining seconds\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60).toLocaleString('en-US', {\n minimumIntegerDigits: 2,\n });\n\n // Calculate the number of hours, minutes, and seconds from the remaining minutes\n const hours = Math.floor(minutes / 60).toLocaleString('en-US', {\n minimumIntegerDigits: 2,\n });\n const remainingMinutes = (minutes % 60).toLocaleString('en-US', {\n minimumIntegerDigits: 2,\n });\n\n return `${hours}:${remainingMinutes}:${remainingSeconds}`;\n};\n\nconst Labelings = (props) => {\n if (!props.dataset.labelings.length || !props.labelings.length) {\n return null;\n }\n\n const labelings = props.dataset.labelings\n .map((elm) =>\n props.labelings.find((labeling) => labeling._id === elm.labelingId)\n )\n .filter((elm) => elm !== undefined);\n\n return (\n
\n \n \n {labelings.map((labeling, idx) => (\n \n
\n {labeling.name.toUpperCase()}\n
\n
\n {labeling.labels.map((label, index) => {\n const labelTypes = props.dataset.labelings[idx].labels.map(\n (elm) => elm.type\n );\n if (!labelTypes.includes(label._id)) {\n return null;\n }\n return (\n \n {label.name}\n \n );\n })}\n
\n \n ))}\n \n
\n
\n );\n};\n\nconst Metadata = (props) => {\n if (!props.metaData) {\n return null;\n }\n const dataset = props.dataset;\n return (\n
\n \n \n
Metadata:
\n \n \n
\n {Object.keys(dataset.metaData).map((key, idx) => {\n const value = dataset.metaData[key];\n return (\n \n {key}: \n {value}\n \n );\n })}\n
\n \n
\n
\n );\n};\n\nconst AdditionalInfo = (props) => {\n const dataset = props.dataset;\n\n return (\n
\n \n \n
\n );\n};\n\nconst DatasetInfo = (props) => {\n const { dataset } = props;\n const datasetStart = Math.min(...dataset.timeSeries.map((elm) => elm.start));\n const datasetEnd = Math.max(...dataset.timeSeries.map((elm) => elm.end));\n\n const duration = Math.max(datasetEnd - datasetStart, 0) || 0;\n const empty = dataset.timeSeries\n .map((elm) => elm.length)\n .every((elm) => elm === 0 || elm === null);\n return (\n
\n
\n {dataset.name}\n
\n {!empty ? (\n \n
\n \n START \n {displayTime(datasetStart)}\n \n
\n
\n \n DURATION \n {format_time(duration)}\n \n
\n
\n ) : (\n
\n
\n \n
\n
Dataset is empty
\n
\n )}\n
\n );\n};\n\nconst ExpandButton = (props) => {\n return (\n {\n e.stopPropagation();\n props.setOpen(!props.isOpen);\n }}\n >\n \n \n \n \n );\n};\n\nconst DatasetTableEntry = (props) => {\n const dataset = props.dataset;\n const history = useHistory();\n\n const [isOpen, setOpen] = useState(false);\n return (\n \n \n
\n
\n console.log(\"Click\")}\n onClick={(e) => props.toggleCheck(e, dataset['_id'])}\n >\n
\n
\n \n \n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n props.deleteEntry(dataset._id)}\n >\n {' '}\n \n {\n const currentPathname = history.location.pathname;\n const id = dataset['_id'];\n const newPathname = currentPathname.replace(\n /\\/view$/,\n `/${id}`\n );\n history.push({\n pathname: newPathname,\n state: dataset,\n });\n }}\n >\n \n \n
\n \n
\n
\n
\n \n \n \n \n
\n );\n};\n\nexport default DatasetTableEntry;\n","import React from 'react';\n/**\n * DropdownContext\n * {\n * toggle: PropTypes.func.isRequired,\n * isOpen: PropTypes.bool.isRequired,\n * direction: PropTypes.oneOf(['up', 'down', 'left', 'right']).isRequired,\n * inNavbar: PropTypes.bool.isRequired,\n * disabled: PropTypes.bool\n * }\n */\n\nexport var DropdownContext = /*#__PURE__*/React.createContext({});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"direction\", \"isOpen\", \"group\", \"size\", \"nav\", \"setActiveFromChild\", \"active\", \"addonType\", \"tag\", \"menuRole\"];\n\n/* eslint react/no-find-dom-node: 0 */\n// https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager } from 'react-popper';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, keyCodes, tagPropType } from './utils';\nvar propTypes = {\n a11y: PropTypes.bool,\n disabled: PropTypes.bool,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n group: PropTypes.bool,\n isOpen: PropTypes.bool,\n nav: PropTypes.bool,\n active: PropTypes.bool,\n addonType: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['prepend', 'append'])]),\n size: PropTypes.string,\n tag: tagPropType,\n toggle: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n inNavbar: PropTypes.bool,\n setActiveFromChild: PropTypes.bool,\n menuRole: PropTypes.oneOf(['listbox', 'menu'])\n};\nvar defaultProps = {\n a11y: true,\n isOpen: false,\n direction: 'down',\n nav: false,\n active: false,\n addonType: false,\n inNavbar: false,\n setActiveFromChild: false\n};\nvar preventDefaultKeys = [keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down, keyCodes.end, keyCodes.home];\n\nvar Dropdown = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Dropdown, _React$Component);\n\n function Dropdown(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.addEvents = _this.addEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.removeEvents = _this.removeEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.handleMenuRef = _this.handleMenuRef.bind(_assertThisInitialized(_this));\n _this.containerRef = /*#__PURE__*/React.createRef();\n _this.menuRef = /*#__PURE__*/React.createRef();\n return _this;\n }\n\n var _proto = Dropdown.prototype;\n\n _proto.handleMenuRef = function handleMenuRef(menuRef) {\n this.menuRef.current = menuRef;\n };\n\n _proto.getContextValue = function getContextValue() {\n return {\n toggle: this.toggle,\n isOpen: this.props.isOpen,\n direction: this.props.direction === 'down' && this.props.dropup ? 'up' : this.props.direction,\n inNavbar: this.props.inNavbar,\n disabled: this.props.disabled,\n // Callback that should be called by DropdownMenu to provide a ref to\n // a HTML tag that's used for the DropdownMenu\n onMenuRef: this.handleMenuRef,\n menuRole: this.props.menuRole\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.handleProps();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.isOpen !== prevProps.isOpen) {\n this.handleProps();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.removeEvents();\n };\n\n _proto.getContainer = function getContainer() {\n return this.containerRef.current;\n };\n\n _proto.getMenu = function getMenu() {\n return this.menuRef.current;\n };\n\n _proto.getMenuCtrl = function getMenuCtrl() {\n if (this._$menuCtrl) return this._$menuCtrl;\n this._$menuCtrl = this.getContainer().querySelector('[aria-expanded]');\n return this._$menuCtrl;\n };\n\n _proto.getItemType = function getItemType() {\n if (this.context.menuRole === 'listbox') {\n return 'option';\n }\n\n return 'menuitem';\n };\n\n _proto.getMenuItems = function getMenuItems() {\n // In a real menu with a child DropdownMenu, `this.getMenu()` should never\n // be null, but it is sometimes null in tests. To mitigate that, we just\n // use `this.getContainer()` as the fallback `menuContainer`.\n var menuContainer = this.getMenu() || this.getContainer();\n return [].slice.call(menuContainer.querySelectorAll(\"[role=\\\"\" + this.getItemType() + \"\\\"]\"));\n };\n\n _proto.addEvents = function addEvents() {\n var _this2 = this;\n\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.addEventListener(event, _this2.handleDocumentClick, true);\n });\n };\n\n _proto.removeEvents = function removeEvents() {\n var _this3 = this;\n\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.removeEventListener(event, _this3.handleDocumentClick, true);\n });\n };\n\n _proto.handleDocumentClick = function handleDocumentClick(e) {\n if (e && (e.which === 3 || e.type === 'keyup' && e.which !== keyCodes.tab)) return;\n var container = this.getContainer();\n var menu = this.getMenu();\n var clickIsInContainer = container.contains(e.target) && container !== e.target;\n var clickIsInMenu = menu && menu.contains(e.target) && menu !== e.target;\n\n if ((clickIsInContainer || clickIsInMenu) && (e.type !== 'keyup' || e.which === keyCodes.tab)) {\n return;\n }\n\n this.toggle(e);\n };\n\n _proto.handleKeyDown = function handleKeyDown(e) {\n var _this4 = this;\n\n var isTargetMenuItem = e.target.getAttribute('role') === 'menuitem' || e.target.getAttribute('role') === 'option';\n var isTargetMenuCtrl = this.getMenuCtrl() === e.target;\n var isTab = keyCodes.tab === e.which;\n\n if (/input|textarea/i.test(e.target.tagName) || isTab && !this.props.a11y || isTab && !(isTargetMenuItem || isTargetMenuCtrl)) {\n return;\n }\n\n if (preventDefaultKeys.indexOf(e.which) !== -1 || e.which >= 48 && e.which <= 90) {\n e.preventDefault();\n }\n\n if (this.props.disabled) return;\n\n if (isTargetMenuCtrl) {\n if ([keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down].indexOf(e.which) > -1) {\n // Open the menu (if not open) and focus the first menu item\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n\n setTimeout(function () {\n return _this4.getMenuItems()[0].focus();\n });\n } else if (this.props.isOpen && isTab) {\n // Focus the first menu item if tabbing from an open menu. We need this\n // for cases where the DropdownMenu sets a custom container, which may\n // not be the natural next item to tab to from the DropdownToggle.\n e.preventDefault();\n this.getMenuItems()[0].focus();\n } else if (this.props.isOpen && e.which === keyCodes.esc) {\n this.toggle(e);\n }\n }\n\n if (this.props.isOpen && isTargetMenuItem) {\n if ([keyCodes.tab, keyCodes.esc].indexOf(e.which) > -1) {\n this.toggle(e);\n this.getMenuCtrl().focus();\n } else if ([keyCodes.space, keyCodes.enter].indexOf(e.which) > -1) {\n e.target.click();\n this.getMenuCtrl().focus();\n } else if ([keyCodes.down, keyCodes.up].indexOf(e.which) > -1 || [keyCodes.n, keyCodes.p].indexOf(e.which) > -1 && e.ctrlKey) {\n var $menuitems = this.getMenuItems();\n var index = $menuitems.indexOf(e.target);\n\n if (keyCodes.up === e.which || keyCodes.p === e.which && e.ctrlKey) {\n index = index !== 0 ? index - 1 : $menuitems.length - 1;\n } else if (keyCodes.down === e.which || keyCodes.n === e.which && e.ctrlKey) {\n index = index === $menuitems.length - 1 ? 0 : index + 1;\n }\n\n $menuitems[index].focus();\n } else if (keyCodes.end === e.which) {\n var _$menuitems = this.getMenuItems();\n\n _$menuitems[_$menuitems.length - 1].focus();\n } else if (keyCodes.home === e.which) {\n var _$menuitems2 = this.getMenuItems();\n\n _$menuitems2[0].focus();\n } else if (e.which >= 48 && e.which <= 90) {\n var _$menuitems3 = this.getMenuItems();\n\n var charPressed = String.fromCharCode(e.which).toLowerCase();\n\n for (var i = 0; i < _$menuitems3.length; i += 1) {\n var firstLetter = _$menuitems3[i].textContent && _$menuitems3[i].textContent[0].toLowerCase();\n\n if (firstLetter === charPressed) {\n _$menuitems3[i].focus();\n\n break;\n }\n }\n }\n }\n };\n\n _proto.handleProps = function handleProps() {\n if (this.props.isOpen) {\n this.addEvents();\n } else {\n this.removeEvents();\n }\n };\n\n _proto.toggle = function toggle(e) {\n if (this.props.disabled) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n };\n\n _proto.render = function render() {\n var _classNames, _ref;\n\n var _omit = omit(this.props, ['toggle', 'disabled', 'inNavbar', 'a11y']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n direction = _omit.direction,\n isOpen = _omit.isOpen,\n group = _omit.group,\n size = _omit.size,\n nav = _omit.nav,\n setActiveFromChild = _omit.setActiveFromChild,\n active = _omit.active,\n addonType = _omit.addonType,\n tag = _omit.tag,\n menuRole = _omit.menuRole,\n attrs = _objectWithoutPropertiesLoose(_omit, _excluded);\n\n var Tag = tag || (nav ? 'li' : 'div');\n var subItemIsActive = false;\n\n if (setActiveFromChild) {\n React.Children.map(this.props.children[1].props.children, function (dropdownItem) {\n if (dropdownItem && dropdownItem.props.active) subItemIsActive = true;\n });\n }\n\n var classes = mapToCssModules(classNames(className, direction !== 'down' && \"drop\" + direction, nav && active ? 'active' : false, setActiveFromChild && subItemIsActive ? 'active' : false, (_classNames = {}, _classNames[\"input-group-\" + addonType] = addonType, _classNames['btn-group'] = group, _classNames[\"btn-group-\" + size] = !!size, _classNames.dropdown = !group && !addonType, _classNames.show = isOpen, _classNames['nav-item'] = nav, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: this.getContextValue()\n }, /*#__PURE__*/React.createElement(Manager, null, /*#__PURE__*/React.createElement(Tag, _extends({}, attrs, (_ref = {}, _ref[typeof Tag === 'string' ? 'ref' : 'innerRef'] = this.containerRef, _ref), {\n onKeyDown: this.handleKeyDown,\n className: classes\n }))));\n };\n\n return Dropdown;\n}(React.Component);\n\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"color\", \"cssModule\", \"caret\", \"split\", \"nav\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Reference } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Button from './Button';\nvar propTypes = {\n caret: PropTypes.bool,\n color: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-haspopup': PropTypes.bool,\n split: PropTypes.bool,\n tag: tagPropType,\n nav: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n 'aria-haspopup': true\n};\n\nvar DropdownToggle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownToggle, _React$Component);\n\n function DropdownToggle(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DropdownToggle.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled || this.context.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.nav && !this.props.tag) {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n this.context.toggle(e);\n };\n\n _proto.getRole = function getRole() {\n return this.context.menuRole || this.props['aria-haspopup'];\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n className = _this$props.className,\n color = _this$props.color,\n cssModule = _this$props.cssModule,\n caret = _this$props.caret,\n split = _this$props.split,\n nav = _this$props.nav,\n tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var ariaLabel = props['aria-label'] || 'Toggle Dropdown';\n var classes = mapToCssModules(classNames(className, {\n 'dropdown-toggle': caret || split,\n 'dropdown-toggle-split': split,\n 'nav-link': nav\n }), cssModule);\n var children = typeof props.children !== 'undefined' ? props.children : /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, ariaLabel);\n var Tag;\n\n if (nav && !tag) {\n Tag = 'a';\n props.href = '#';\n } else if (!tag) {\n Tag = Button;\n props.color = color;\n props.cssModule = cssModule;\n } else {\n Tag = tag;\n }\n\n if (this.context.inNavbar) {\n return /*#__PURE__*/React.createElement(Tag, _extends({}, props, {\n className: classes,\n onClick: this.onClick,\n \"aria-expanded\": this.context.isOpen,\n \"aria-haspopup\": this.getRole(),\n children: children\n }));\n }\n\n return /*#__PURE__*/React.createElement(Reference, {\n innerRef: innerRef\n }, function (_ref) {\n var _ref2;\n\n var ref = _ref.ref;\n return /*#__PURE__*/React.createElement(Tag, _extends({}, props, (_ref2 = {}, _ref2[typeof Tag === 'string' ? 'ref' : 'innerRef'] = ref, _ref2), {\n className: classes,\n onClick: _this2.onClick,\n \"aria-expanded\": _this2.context.isOpen,\n \"aria-haspopup\": _this2.getRole(),\n children: children\n }));\n });\n };\n\n return DropdownToggle;\n}(React.Component);\n\nDropdownToggle.propTypes = propTypes;\nDropdownToggle.defaultProps = defaultProps;\nDropdownToggle.contextType = DropdownContext;\nexport default DropdownToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"right\", \"tag\", \"flip\", \"modifiers\", \"persist\", \"positionFixed\", \"container\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType, targetPropType, getTarget } from './utils';\nvar propTypes = {\n tag: tagPropType,\n children: PropTypes.node.isRequired,\n right: PropTypes.bool,\n flip: PropTypes.bool,\n modifiers: PropTypes.object,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n persist: PropTypes.bool,\n positionFixed: PropTypes.bool,\n container: targetPropType\n};\nvar defaultProps = {\n tag: 'div',\n flip: true\n};\nvar noFlipModifier = {\n flip: {\n enabled: false\n }\n};\nvar directionPositionMap = {\n up: 'top',\n left: 'left',\n right: 'right',\n down: 'bottom'\n};\n\nvar DropdownMenu = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownMenu, _React$Component);\n\n function DropdownMenu() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DropdownMenu.prototype;\n\n _proto.getRole = function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'listbox';\n }\n\n return 'menu';\n };\n\n _proto.render = function render() {\n var _this = this;\n\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n right = _this$props.right,\n tag = _this$props.tag,\n flip = _this$props.flip,\n modifiers = _this$props.modifiers,\n persist = _this$props.persist,\n positionFixed = _this$props.positionFixed,\n container = _this$props.container,\n attrs = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'dropdown-menu', {\n 'dropdown-menu-right': right,\n show: this.context.isOpen\n }), cssModule);\n var Tag = tag;\n\n if (persist || this.context.isOpen && !this.context.inNavbar) {\n var position1 = directionPositionMap[this.context.direction] || 'bottom';\n var position2 = right ? 'end' : 'start';\n var poperPlacement = position1 + \"-\" + position2;\n var poperModifiers = !flip ? _objectSpread(_objectSpread({}, modifiers), noFlipModifier) : modifiers;\n var popperPositionFixed = !!positionFixed;\n var popper = /*#__PURE__*/React.createElement(Popper, {\n placement: poperPlacement,\n modifiers: poperModifiers,\n positionFixed: popperPositionFixed\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement;\n\n var combinedStyle = _objectSpread(_objectSpread({}, _this.props.style), style);\n\n var handleRef = function handleRef(tagRef) {\n // Send the ref to `react-popper`\n ref(tagRef); // Send the ref to the parent Dropdown so that clicks outside\n // it will cause it to close\n\n var onMenuRef = _this.context.onMenuRef;\n if (onMenuRef) onMenuRef(tagRef);\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: _this.getRole(),\n ref: handleRef\n }, attrs, {\n style: combinedStyle,\n \"aria-hidden\": !_this.context.isOpen,\n className: classes,\n \"x-placement\": placement\n }));\n });\n\n if (container) {\n return /*#__PURE__*/ReactDOM.createPortal(popper, getTarget(container));\n } else {\n return popper;\n }\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: this.getRole()\n }, attrs, {\n \"aria-hidden\": !this.context.isOpen,\n className: classes,\n \"x-placement\": attrs.placement\n }));\n };\n\n return DropdownMenu;\n}(React.Component);\n\n;\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\nDropdownMenu.contextType = DropdownContext;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"divider\", \"tag\", \"header\", \"active\", \"text\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n divider: PropTypes.bool,\n tag: tagPropType,\n header: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.bool,\n text: PropTypes.bool\n};\nvar defaultProps = {\n tag: 'button',\n toggle: true\n};\n\nvar DropdownItem = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownItem, _React$Component);\n\n function DropdownItem(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.getTabIndex = _this.getTabIndex.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DropdownItem.prototype;\n\n _proto.getRole = function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'option';\n }\n\n return 'menuitem';\n };\n\n _proto.onClick = function onClick(e) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n header = _this$props.header,\n divider = _this$props.divider,\n text = _this$props.text;\n\n if (disabled || header || divider || text) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n if (this.props.toggle) {\n this.context.toggle(e);\n }\n };\n\n _proto.getTabIndex = function getTabIndex() {\n var _this$props2 = this.props,\n disabled = _this$props2.disabled,\n header = _this$props2.header,\n divider = _this$props2.divider,\n text = _this$props2.text;\n\n if (disabled || header || divider || text) {\n return '-1';\n }\n\n return '0';\n };\n\n _proto.render = function render() {\n var tabIndex = this.getTabIndex();\n var role = tabIndex > -1 ? this.getRole() : undefined;\n\n var _omit = omit(this.props, ['toggle']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n divider = _omit.divider,\n Tag = _omit.tag,\n header = _omit.header,\n active = _omit.active,\n text = _omit.text,\n props = _objectWithoutPropertiesLoose(_omit, _excluded);\n\n var classes = mapToCssModules(classNames(className, {\n disabled: props.disabled,\n 'dropdown-item': !divider && !header && !text,\n active: active,\n 'dropdown-header': header,\n 'dropdown-divider': divider,\n 'dropdown-item-text': text\n }), cssModule);\n\n if (Tag === 'button') {\n if (header) {\n Tag = 'h6';\n } else if (divider) {\n Tag = 'div';\n } else if (props.href) {\n Tag = 'a';\n } else if (text) {\n Tag = 'span';\n }\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && (props.onClick || this.props.toggle) ? 'button' : undefined\n }, props, {\n tabIndex: tabIndex,\n role: role,\n className: classes,\n onClick: this.onClick\n }));\n };\n\n return DropdownItem;\n}(React.Component);\n\nDropdownItem.propTypes = propTypes;\nDropdownItem.defaultProps = defaultProps;\nDropdownItem.contextType = DropdownContext;\nexport default DropdownItem;","import {\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from 'reactstrap';\nimport { faSort } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './DatasetFilter.css';\nimport { useState } from 'react';\n\nconst DatasetSorting = ({\n sortDropDownIsOpen,\n setSortDropdownIsOpen,\n selectedSorting,\n setSelectedSorting,\n}) => {\n const [sortingText, setSortingText] = useState(null);\n\n const toggleDropdown = () => {\n setSortDropdownIsOpen(!sortDropDownIsOpen);\n };\n\n const handleItemClick = (e) => {\n sortDatasets(e.currentTarget.getAttribute('data-dropdownvalue'));\n setSortingText(e.currentTarget.textContent);\n toggleDropdown();\n };\n\n const sortDatasets = (dropdownvalue) => {\n setSelectedSorting(dropdownvalue);\n };\n\n return (\n \n \n {sortingText || }\n \n \n Filter Selection\n \n Alphabetical (descending)\n \n \n Alphabetical (ascending)\n \n \n Recording Date (descending)\n \n \n Recording Date (ascending)\n \n \n \n );\n};\n\nexport default DatasetSorting;\n","import {\n faDownload,\n faFilter,\n faTrashAlt,\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Container } from 'reactstrap';\nimport Checkbox from '../../components/Common/Checkbox';\nimport DatasetTableEntry from './DatasetTableEntry';\nimport DatasetSorting from './DatasetSorting';\n\nconst DatasetTable = (props) => {\n const [areAllSelected, setAllSelected] = useState(false);\n return (\n
\n \n
\n
DATASETS
\n \n Download All\n \n
\n {props.datasets.length > 0 ? (\n
\n
\n
\n
\n {\n setAllSelected(!areAllSelected);\n if (areAllSelected) {\n props.deselectAll();\n } else {\n props.selectAll();\n }\n }}\n >\n
\n \n \n Delete\n \n elm.end != 0)}*/\n className=\"ml-2\"\n >\n \n Select Empty Datasets\n \n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n \n {props.datasets.map((dataset, index) => (\n \n ))}\n
\n
\n ) : (\n \n
No datasets available yet.
\n \n )}\n \n \n );\n};\n\nexport default DatasetTable;\n","import {\n faCode,\n faFile,\n faMicrochip,\n faMobileAlt,\n faPhone,\n faPhoneAlt,\n faPhoneSquare,\n faPhoneSquareAlt,\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Button, Row, Col } from 'reactstrap';\n\nconst DataUpload = (props) => {\n const history = useHistory();\n\n return (\n \n
\n DATA UPLOAD\n
\n \n \n
\n \n
\n
\n
\n \n WebBLE Direct Connect\n
\n Learn how to prepare your Arduino{' '}\n \n here\n \n .\n
\n
\n {\n history.push('../ble');\n }}\n style={{ padding: '0px' }}\n >\n Connect BLE Device\n \n
\n \n \n
\n \n
\n
\n
\n \n CSV File Upload\n
\n Learn how to prepare your CSV file{' '}\n \n here\n \n .\n
\n
\n props.toggleCreateNewDatasetModal()}\n style={{ padding: '0px' }}\n >\n Upload CSV Files\n \n
\n \n \n
\n \n
\n
\n
\n \n Library Upload\n
\n Implement custom logic using edge-ml libraries.\n
\n
\n {\n history.push('./settings/getCode');\n }}\n style={{ padding: '0px' }}\n >\n Generate Code\n \n
\n \n \n
\n \n
\n
\n
\n \n Web Sensor API\n
\n Collect sensor data of smartphone in browser.\n
\n
\n {\n history.push('./uploadWeb');\n }}\n style={{ padding: '0px' }}\n >\n Collect Web Sensor Data\n \n
\n \n
\n \n );\n};\n\nexport default DataUpload;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"size\", \"vertical\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n 'aria-label': PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n role: PropTypes.string,\n size: PropTypes.string,\n vertical: PropTypes.bool\n};\nvar defaultProps = {\n tag: 'div',\n role: 'group'\n};\n\nvar ButtonGroup = function ButtonGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n size = props.size,\n vertical = props.vertical,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, size ? 'btn-group-' + size : false, vertical ? 'btn-group-vertical' : 'btn-group'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nButtonGroup.propTypes = propTypes;\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"className\", \"barClassName\", \"cssModule\", \"value\", \"min\", \"max\", \"animated\", \"striped\", \"color\", \"bar\", \"multi\", \"tag\", \"style\", \"barStyle\", \"barAriaValueText\", \"barAriaLabelledBy\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, toNumber } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n bar: PropTypes.bool,\n multi: PropTypes.bool,\n tag: tagPropType,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n min: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n max: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n animated: PropTypes.bool,\n striped: PropTypes.bool,\n color: PropTypes.string,\n className: PropTypes.string,\n barClassName: PropTypes.string,\n cssModule: PropTypes.object,\n style: PropTypes.object,\n barStyle: PropTypes.object,\n barAriaValueText: PropTypes.string,\n barAriaLabelledBy: PropTypes.string\n};\nvar defaultProps = {\n tag: 'div',\n value: 0,\n min: 0,\n max: 100,\n style: {},\n barStyle: {}\n};\n\nvar Progress = function Progress(props) {\n var children = props.children,\n className = props.className,\n barClassName = props.barClassName,\n cssModule = props.cssModule,\n value = props.value,\n min = props.min,\n max = props.max,\n animated = props.animated,\n striped = props.striped,\n color = props.color,\n bar = props.bar,\n multi = props.multi,\n Tag = props.tag,\n style = props.style,\n barStyle = props.barStyle,\n barAriaValueText = props.barAriaValueText,\n barAriaLabelledBy = props.barAriaLabelledBy,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var percent = toNumber(value) / toNumber(max) * 100;\n var progressClasses = mapToCssModules(classNames(className, 'progress'), cssModule);\n var progressBarClasses = mapToCssModules(classNames('progress-bar', bar ? className || barClassName : barClassName, animated ? 'progress-bar-animated' : null, color ? \"bg-\" + color : null, striped || animated ? 'progress-bar-striped' : null), cssModule);\n var progressBarProps = {\n className: progressBarClasses,\n style: _objectSpread(_objectSpread(_objectSpread({}, bar ? style : {}), barStyle), {}, {\n width: percent + \"%\"\n }),\n role: 'progressbar',\n 'aria-valuenow': value,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuetext': barAriaValueText,\n 'aria-labelledby': barAriaLabelledBy,\n children: children\n };\n\n if (bar) {\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, progressBarProps));\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n style: style,\n className: progressClasses\n }), multi ? children : /*#__PURE__*/React.createElement(\"div\", progressBarProps));\n};\n\nProgress.propTypes = propTypes;\nProgress.defaultProps = defaultProps;\nexport default Progress;","import React, { Component } from 'react';\n\nclass DragDrop extends Component {\n constructor(props) {\n super(props);\n\n this.state = { inputKey: 0 };\n this.onCancel = this.onCancel.bind(this);\n this.onDrop = this.onDrop.bind(this);\n this.onFileInput = this.onFileInput.bind(this);\n }\n\n onFileInput(e) {\n var files = e.target.files;\n this.props.onFileInput(files);\n this.setState({ inputKey: this.state.inputKey + 1 });\n }\n\n onCancel(e) {\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n }\n\n onDrop(e) {\n e.stopPropagation();\n e.preventDefault();\n var files = e.dataTransfer.files;\n this.props.onFileInput(files);\n }\n\n render() {\n return (\n
\n \n {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={{\n cursor: 'pointer',\n opacity: 0,\n position: 'absolute',\n boxSizing: 'inherit',\n height: 'inherit',\n }}\n id=\"fileInput\"\n data-testid=\"fileInput\"\n accept=\".csv\"\n onChange={this.onFileInput}\n type=\"file\"\n key={this.state.inputKey}\n multiple\n className=\"custom-file-input\"\n />\n \n {' '}\n
\n Drag 'n' drop some files here, or{' '}\n \n {' click here '}\n {' '}\n to select files\n
\n
\n \n \n );\n }\n}\n\nexport default DragDrop;\n","var prefix = \"far\";\nvar faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faMessage = {\n prefix: 'far',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z\"]\n};\nvar faCommentAlt = faMessage;\nvar faFileLines = {\n prefix: 'far',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCalendarDays = {\n prefix: 'far',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z\"]\n};\nvar faFaceSmileBeam = {\n prefix: 'far',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFaceGrinStars = {\n prefix: 'far',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z\"]\n};\nvar faFileClipboard = faPaste;\nvar faFaceGrinTongueSquint = {\n prefix: 'far',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faFaceFlushed = {\n prefix: 'far',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faSquareCaretRight = {\n prefix: 'far',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faSquareMinus = {\n prefix: 'far',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'far',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFaceKissBeam = {\n prefix: 'far',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z\"]\n};\nvar faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faCircleDot = {\n prefix: 'far',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'far',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z\"]\n};\nvar faEdit = faPenToSquare;\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm51.3 163.3l-41.9-33C378.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.5zm-88-69.3L302 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.5c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8z\"]\n};\nvar faHand = {\n prefix: 'far',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z\"]\n};\nvar faHandPaper = faHand;\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"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 512c-11.2 0-22.5 0-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.8c11.2 0 22.5 0 33.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};\nvar faFaceKiss = {\n prefix: 'far',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faFaceGrinTongue = {\n prefix: 'far',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'far',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faFaceGrinWide = {\n prefix: 'far',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faFaceFrownOpen = {\n prefix: 'far',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'far',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.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};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'far',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faFaceLaugh = {\n prefix: 'far',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faHandBackFist = {\n prefix: 'far',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'far',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBarChart = faChartBar;\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"]\n};\nvar faSquarePlus = {\n prefix: 'far',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faFolderClosed = {\n prefix: 'far',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H289.9L247 53.1C233.5 39.6 215.2 32 196.1 32H64zM48 96c0-8.8 7.2-16 16-16H196.1c6.4 0 12.5 2.5 17 7l45.3 45.3c7.5 7.5 17.7 11.7 28.3 11.7H448c8.8 0 16 7.2 16 16v32H48V96zm0 144H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"]\n};\nvar faCirclePlay = {\n prefix: 'far',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faCircleCheck = {\n prefix: 'far',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'far',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'far',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faFaceTired = {\n prefix: 'far',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faFontAwesome = {\n prefix: 'far',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M48 56c0-13.3-10.7-24-24-24S0 42.7 0 56V456c0 13.3 10.7 24 24 24s24-10.7 24-24V124.2l12.5-2.4c16.7-3.2 31.5-8.5 44.2-13.1l0 0 0 0c3.7-1.3 7.1-2.6 10.4-3.7c15.2-5.2 30.4-9.1 51.2-9.1c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c32.4 0 53.7-6.8 90.5-19.6V342.9l-9.5 3.3c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-16.8 0-31 2-43.9 5c-12.9 3-20.9 16-17.9 28.9s16 20.9 28.9 17.9c9.6-2.2 20.1-3.7 32.9-3.7c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c34.4 0 56.4-7.7 97.8-22.2c7.5-2.6 15.5-5.4 24.4-8.5l16.2-5.5V360 72 38.4L416.2 49.3c-9.7 3.3-18.2 6.3-25.7 8.9c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-27.8 0-48.5 5.5-66.6 11.6c-4.9 1.7-9.3 3.3-13.6 4.8c-11.9 4.3-22 7.9-34.7 10.3L48 75.4V56z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faFaceSmileWink = {\n prefix: 'far',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z\"]\n};\nvar faFileZipper = {\n prefix: 'far',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'far',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faStarHalfStroke = {\n prefix: 'far',\n iconName: 'star-half-stroke',\n icon: [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.7V79.1l52.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};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'far',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z\"]\n};\nvar faCircleRight = {\n prefix: 'far',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faFaceRollingEyes = {\n prefix: 'far',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z\"]\n};\nvar faFaceSurprise = {\n prefix: 'far',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faCirclePause = {\n prefix: 'far',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCircleUp = {\n prefix: 'far',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z\"]\n};\nvar faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faFaceMehBlank = {\n prefix: 'far',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"]\n};\nvar faFaceSadCry = {\n prefix: 'far',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z\"]\n};\nvar faFaceFrown = {\n prefix: 'far',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faFloppyDisk = {\n prefix: 'far',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faSave = faFloppyDisk;\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCommenting = faCommentDots;\nvar faFaceGrinSquint = {\n prefix: 'far',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'far',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faCalendarXmark = {\n prefix: 'far',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M64 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};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faHardDrive = {\n prefix: 'far',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'far',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faRectangleList = {\n prefix: 'far',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faListAlt = faRectangleList;\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V256c0-13.3-10.7-24-24-24z\"]\n};\nvar faCircleLeft = {\n prefix: 'far',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faMoneyBill1 = {\n prefix: 'far',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faFaceGrin = {\n prefix: 'far',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFaceMeh = {\n prefix: 'far',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faMeh = faFaceMeh;\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'far',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDown = {\n prefix: 'far',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V208c0-61.9 50.1-112 112-112zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.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.4V128.4z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faCircleUser = {\n prefix: 'far',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z\"]\n};\nvar faShareFromSquare = {\n prefix: 'far',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM224 150.3C243.6 117.7 279.3 96 320 96c61.9 0 112 50.1 112 112v25.4c0 32.7 6.4 64.8 18.7 94.5L224 150.3zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z\"]\n};\nvar faFaceSmile = {\n prefix: 'far',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'far',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'far',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z\"]\n};\nvar faFaceGrinTongueWink = {\n prefix: 'far',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z\"]\n};\nvar faFaceAngry = {\n prefix: 'far',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faRectangleXmark = {\n prefix: 'far',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faFaceGrimace = {\n prefix: 'far',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM296 352H152c-13.3 0-24-10.7-24-24s10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faCircleXmark = {\n prefix: 'far',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.2s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z\"]\n};\nvar faNoteSticky = {\n prefix: 'far',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faFaceSadTear = {\n prefix: 'far',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z\"]\n};\nvar icons = {\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faHandPointRight: faHandPointRight,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faLightbulb: faLightbulb,\n faFlag: faFlag,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faEyeSlash: faEyeSlash,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faHandSpock: faHandSpock,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faBookmark: faBookmark,\n faHandPointDown: faHandPointDown,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faUser: faUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faStar: faStar,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faClipboard: faClipboard,\n faChessQueen: faChessQueen,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faImage: faImage,\n faFolderClosed: faFolderClosed,\n faLemon: faLemon,\n faHandshake: faHandshake,\n faGem: faGem,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faIdBadge: faIdBadge,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faEnvelopeOpen: faEnvelopeOpen,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExcel: faFileExcel,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faHeart: faHeart,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faCircle: faCircle,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faFileAudio: faFileAudio,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faFileCode: faFileCode,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandPointer: faHandPointer,\n faHandScissors: faHandScissors,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faFileVideo: faFileVideo,\n faFilePdf: faFilePdf,\n faComment: faComment,\n faEnvelope: faEnvelope,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faCalendarCheck: faCalendarCheck,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faCalendarPlus: faCalendarPlus,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faKeyboard: faKeyboard,\n faClosedCaptioning: faClosedCaptioning,\n faImages: faImages,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faSun: faSun,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faThumbsDown: faThumbsDown,\n faChessPawn: faChessPawn,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faBell: faBell,\n faFile: faFile,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faChessRook: faChessRook,\n faStarHalf: faStarHalf,\n faChessKing: faChessKing,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faCopy: faCopy,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faCopyright: faCopyright,\n faMap: faMap,\n faBellSlash: faBellSlash,\n faHandLizard: faHandLizard,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faHandPeace: faHandPeace,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faBuilding: faBuilding,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faMoon: faMoon,\n faCalendar: faCalendar,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faClone: faClone,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faPaperPlane: faPaperPlane,\n faLifeRing: faLifeRing,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faThumbsUp: faThumbsUp,\n faWindowMinimize: faWindowMinimize,\n faSquareFull: faSquareFull,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faHandPointLeft: faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n","import apiConsts from './ApiConstants';\nimport ax from 'axios';\n\nconst axios = ax.create();\n\nexport const processCSVBackend = (formData, fileId, handleProgress) => {\n const source = ax.CancelToken.source();\n\n const cancellationHandler = () => {\n source.cancel('Operation cancelled by the user');\n };\n\n const req = axios({\n ...apiConsts.generateApiRequest(\n apiConsts.HTTP_METHODS.POST,\n apiConsts.DATASET_STORE,\n apiConsts.DATASET_STORE_ENDPOINTS.CREATE_DATASET,\n formData,\n {},\n 'multipart/form-data'\n ),\n onUploadProgress: (progressEvent) => {\n const progress = (progressEvent.loaded / progressEvent.total) * 100;\n handleProgress(fileId, progress);\n },\n cancelToken: source.token,\n });\n\n return [cancellationHandler, req];\n};\n","import React from 'react';\n\nimport {\n Table,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Input,\n Button,\n} from 'reactstrap';\n\nexport const DatasetConfigView = ({ fileId, fileConfig, changeConfig }) => {\n const onDeleteLabeling = (labelingToDeleteOriginalName) => {\n changeConfig(fileId, {\n ...fileConfig,\n labelings: fileConfig.labelings.map((l) =>\n l.originalName !== labelingToDeleteOriginalName\n ? l\n : { ...l, removed: true }\n ),\n });\n };\n\n const onCloseConfig = () => {\n changeConfig(fileId, {\n ...fileConfig,\n editingModeActive: false,\n });\n };\n\n const onSetAllUnits = ({ unit, scale, offset }) => {\n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) => ({\n ...ts,\n unit: unit,\n scale: scale,\n offset: offset,\n })),\n });\n };\n\n const isNumeric = (value) => {\n return /^[0-9]+$/.test(value);\n };\n\n return (\n
\n {' '}\n \n {' '}\n \n \n \n \n \n \n {fileConfig.error ? (\n \n \n \n \n \n ) : (\n \n {fileConfig.timeSeries.map((timeSeries, seriesIndex) => {\n if (timeSeries.removed) return null;\n return (\n \n \n \n \n Name\n \n \n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) => {\n if (ts === timeSeries) {\n return {\n ...ts,\n name: e.target.value,\n };\n }\n return ts;\n }),\n })\n }\n />\n \n \n \n \n \n Unit\n \n \n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) => {\n if (ts === timeSeries) {\n return {\n ...ts,\n unit: e.target.value,\n };\n }\n return ts;\n }),\n })\n }\n />\n \n \n \n \n \n Scale\n \n {\n if (\n e.target.value !== '' &&\n !isNumeric(e.target.value)\n )\n return;\n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) => {\n if (ts === timeSeries) {\n return {\n ...ts,\n scale:\n e.target.value === '' ? 1 : e.target.value,\n };\n }\n return ts;\n }),\n });\n }}\n />\n \n \n \n \n \n Offset\n \n {\n if (\n e.target.value !== '' &&\n !isNumeric(e.target.value)\n )\n return;\n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) => {\n if (ts === timeSeries) {\n return {\n ...ts,\n offset:\n e.target.value === '' ? 0 : e.target.value,\n };\n }\n return ts;\n }),\n });\n }}\n />\n \n \n \n \n \n );\n })}\n \n )}\n
\n \n \n \n Dataset-name\n \n \n \n changeConfig(fileId, {\n ...fileConfig,\n name: e.target.value,\n })\n }\n />\n \n \n
\n {\n changeConfig(fileId, {\n ...fileConfig,\n editingModeActive: false,\n });\n onCloseConfig();\n }}\n >\n Confirm\n \n
\n
\n Error: {fileConfig.error}\n
\n \n onSetAllUnits(fileConfig.timeSeries[seriesIndex])\n }\n >\n Set all\n \n \n \n changeConfig(fileId, {\n ...fileConfig,\n timeSeries: fileConfig.timeSeries.map((ts) =>\n ts !== timeSeries ? ts : { ...ts, removed: true }\n ),\n })\n }\n >\n Delete\n \n
\n
\n {fileConfig.labelings.map((labeling, labelingIndex) => {\n if (labeling.removed) return null;\n return (\n
\n \n {labeling.name}\n
\n onDeleteLabeling(labeling.originalName)}\n >\n Delete\n \n
\n );\n })}\n
\n
\n \n );\n};\n","import { useState, useCallback, useEffect, useRef } from 'react';\nexport const useSelect = (list, initialIndex = 0) => {\n const [selectedIndex, setSelectedIndex] = useState(initialIndex);\n\n const setItem = useCallback(\n (item) => {\n setSelectedIndex(list.indexOf(item));\n },\n [list]\n );\n\n return {\n index: selectedIndex,\n item: list[selectedIndex],\n setIndex: setSelectedIndex,\n setItem,\n list,\n };\n};\n\nexport const useIncrement = () => {\n const [i, setI] = useState(0);\n return [i, () => setI(i + 1)];\n};\n\nexport function useAsyncMemo(factory, deps, initial = undefined) {\n const [val, setVal] = useState(initial);\n useEffect(() => {\n let cancel = false;\n const promise = factory();\n if (promise === undefined || promise === null) return;\n promise.then((val) => {\n if (!cancel) {\n setVal(val);\n }\n });\n return () => {\n cancel = true;\n };\n }, deps);\n return val;\n}\n\nexport function useBoolean(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n\n const setTrue = () => setValue(true);\n const setFalse = () => setValue(false);\n const toggle = () => setValue((x) => !x);\n\n return [value, setTrue, setFalse, toggle];\n}\n\nexport function useMediaQuery(query) {\n const getMatches = (query) => {\n // Prevents SSR issues\n if (typeof window !== 'undefined') {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n\n const [matches, setMatches] = useState(getMatches(query));\n\n function handleChange() {\n setMatches(getMatches(query));\n }\n\n useEffect(() => {\n const matchMedia = window.matchMedia(query);\n\n // Triggered at the first client-side load and if query changes\n handleChange();\n\n // Listen matchMedia\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener('change', handleChange);\n }\n\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener('change', handleChange);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n return matches;\n}\n\nexport const useBootstrapMDBreakpoint = () =>\n useMediaQuery('(min-width: 768px)');\n\n// https://levelup.gitconnected.com/react-localstorage-persisting-state-with-a-custom-hook-98f9a88ae7a9\nexport const usePersistedState = (defaultValue, localStorageKey) => {\n const [value, setValue] = useState(() => {\n const localStorageItem = localStorage.getItem(localStorageKey);\n if (localStorageItem === null) return defaultValue;\n try {\n return JSON.parse(localStorageItem);\n } catch (err) {\n return defaultValue;\n }\n });\n\n useEffect(() => {\n localStorage.setItem(localStorageKey, JSON.stringify(value));\n }, [value]);\n\n // Expose the value and the updater function.\n return [value, setValue];\n};\n\nexport const useInterval = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => {\n clearInterval(id);\n }\n }\n }, [callback, delay]);\n}","import React, { useState } from 'react';\nimport {\n Modal,\n ModalHeader,\n ModalBody,\n Button,\n Progress,\n ModalFooter,\n Alert,\n ButtonGroup,\n} from 'reactstrap';\nimport DragDrop from '../Common/DragDrop';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faSpinner,\n faTrashAlt,\n faCog,\n faCheckCircle,\n faCheck,\n faBan,\n} from '@fortawesome/free-solid-svg-icons';\nimport { faFile } from '@fortawesome/free-regular-svg-icons';\n\nimport { processCSVBackend } from '../../services/ApiServices/CSVServices';\nimport { DatasetConfigView } from './DatasetConfigView';\n\nimport './UploadDatasetModal.css';\n\nimport {\n getUploadProcessingProgress,\n updateDataset,\n} from '../../services/ApiServices/DatasetServices';\nimport { useInterval } from '../../services/ReactHooksService';\n\nexport const UploadDatasetModal = ({\n isOpen,\n onCloseModal,\n onDatasetComplete,\n}) => {\n const [files, setFiles] = useState([]);\n const [count, setCount] = useState(0); // used to create fileId for input files\n const [showWarning, setShowWarning] = useState(false);\n const [consecutiveNoUpdateCount, setConsecutiveNoUpdateCount] = useState(0);\n const MAXIMUM_POLLING_INTERVAL = 60 * 1000; // 60 seconds\n\n const FileStatus = Object.freeze({\n CONFIGURATION: 'Configuration',\n UPLOADING: 'Uploading',\n PROCESSING: 'Processing',\n COMPLETE: 'Complete',\n ERROR: 'Error',\n CANCELLED: 'Cancelled',\n });\n\n const addFiles = (inputFiles) => {\n const formatted = [...inputFiles].map((f, idx) => ({\n name: f.name,\n progress: 0,\n status: FileStatus.CONFIGURATION,\n id: count + idx,\n csv: inputFiles[idx],\n error: undefined,\n datasetId: undefined,\n processingStep: undefined,\n processedTimeseries: [undefined, undefined],\n }));\n setFiles([...files, ...formatted]);\n setCount(count + inputFiles.length);\n return formatted.map((f) => f.id);\n };\n\n const setController = (fileId, cancellationHandler) => {\n setFiles((prevState) =>\n prevState.map((file) => {\n if (file.id === fileId) {\n return {\n ...file,\n cancellationHandler: cancellationHandler,\n };\n }\n return file;\n })\n );\n };\n\n const handleProgress = (fileId, progress) => {\n setFiles((prevState) =>\n prevState.map((file) => {\n if (file.id === fileId) {\n return {\n ...file,\n progress,\n };\n }\n return file;\n })\n );\n };\n\n const handleStatus = (fileId, status) => {\n setFiles((prevState) =>\n prevState.map((file) => {\n if (file.id === fileId) {\n return {\n ...file,\n status: status,\n progress: status === FileStatus.ERROR ? 100 : file.progress,\n };\n }\n return file;\n })\n );\n };\n\n const handleCancel = (cancelledFile) => {\n cancelledFile.cancellationHandler();\n };\n\n const handleDelete = (fileId) => {\n setFiles((prevState) => prevState.filter((file) => file.id !== fileId));\n };\n\n const initConfig = (fileId, timeSeries, labelings) => {\n setFiles((prevState) =>\n prevState.map((file) => {\n if (file.id === fileId) {\n return {\n ...file,\n config: {\n timeSeries: timeSeries,\n labelings: labelings,\n name: file.name.endsWith('.csv')\n ? file.name.substring(0, file.name.length - 4)\n : file.name,\n editingModeActive: false,\n },\n };\n }\n return file;\n })\n );\n };\n\n const changeConfig = (fileId, newConfig) => {\n setFiles((prevState) =>\n prevState.map((file) => {\n if (file.id === fileId) {\n return {\n ...file,\n config: newConfig,\n };\n }\n return file;\n })\n );\n };\n\n const extractHeader = (fileId, file) => {\n return new Promise((resolve, reject) => {\n const CHUNK_SIZE = 128;\n const decoder = new TextDecoder();\n let offset = 0;\n let results = '';\n const fr = new FileReader();\n\n fr.onload = function () {\n results += decoder.decode(fr.result, { stream: true });\n const lines = results.split('\\n');\n if (lines.length > 1) {\n resolve(lines[0]);\n }\n results = lines.pop();\n offset += CHUNK_SIZE;\n seek();\n };\n\n fr.onerror = function () {\n setFiles((prevFiles) =>\n prevFiles.map((f) =>\n f.id === fileId ? { ...f, error: fr.error } : f\n )\n );\n reject(fr.error);\n };\n\n seek();\n\n function seek() {\n if (offset >= file.size) {\n resolve(results);\n return;\n }\n const slice = file.slice(offset, offset + CHUNK_SIZE);\n fr.readAsArrayBuffer(slice);\n }\n });\n };\n\n const parseHeader = (header) => {\n const fields = header.split(',').map((f) => f.trim());\n const invalid = fields.find(\n (f) => !f.startsWith('sensor_') && !f.startsWith('label_') && f != 'time'\n );\n if (invalid || fields.length < 2) {\n return [undefined, undefined];\n }\n const unitPattern = /\\[([^\\[\\]]*)\\]$/;\n const timeSeries = fields\n .filter((f) => f.startsWith('sensor_'))\n .map((f, idx) => {\n const match = f.match(unitPattern);\n const name = match ? f.slice(7, match.index) : f.slice(7);\n const unit = match ? match[1] : '';\n return {\n name: name,\n originalName: name,\n unit: unit,\n originalUnit: unit,\n removed: false,\n index: idx,\n scale: 1,\n offset: 0,\n };\n });\n const labelings = fields\n .filter((f) => f.startsWith('label_'))\n .map((f) => {\n const [, labeling, label] = f.split('_');\n return {\n name: label,\n labelingItBelongs: labeling,\n };\n })\n .reduce((acc, label, index) => {\n // reduce over labels\n const idx = acc.findIndex(\n (labeling) => labeling.name === label.labelingItBelongs\n );\n if (idx >= 0) {\n acc[idx].labels.push(label.name);\n acc[idx].indices.push(index);\n } else {\n acc.push({\n // push resulting labelings\n name: label.labelingItBelongs,\n originalName: label.labelingItBelongs,\n removed: false,\n labels: [label.name],\n indices: [index],\n });\n }\n return acc;\n }, [])\n .map((labeling, index) => ({ ...labeling, index: index }));\n return [timeSeries, labelings];\n };\n\n const onFileInput = async (inputFiles) => {\n const fileIds = addFiles(inputFiles);\n for (let i = 0; i < inputFiles.length; ++i) {\n const header = await extractHeader(fileIds[i], inputFiles[i]);\n const [timeSeries, labelings] = parseHeader(header);\n if (!timeSeries || !labelings) {\n setFiles((prevFiles) =>\n prevFiles.map((f) =>\n f.id === fileIds[i]\n ? {\n ...f,\n error: 'Invalid format, parsing failed',\n status: FileStatus.ERROR,\n progress: 100,\n }\n : f\n )\n );\n continue;\n }\n initConfig(fileIds[i], timeSeries, labelings);\n }\n };\n\n const handleUpload = async (file) => {\n const formData = new FormData();\n formData.append('CSVFile', file.csv);\n formData.append('CSVConfig', JSON.stringify(file.config));\n handleStatus(file.id, FileStatus.UPLOADING);\n setConsecutiveNoUpdateCount(0);\n const [cancellationHandler, response] = processCSVBackend(\n formData,\n file.id,\n handleProgress\n );\n setController(file.id, cancellationHandler);\n try {\n const result = await response;\n setFiles((prevFiles) =>\n prevFiles.map((f) =>\n f.id === file.id\n ? {\n ...f,\n datasetId: result.data.datasetId,\n status: FileStatus.PROCESSING,\n processingStep: 'Started processing',\n }\n : f\n )\n );\n onDatasetComplete();\n } catch (err) {\n const message = err?.response?.data?.detail || err.message;\n setFiles((prevFiles) =>\n prevFiles.map((f) => (f.id === file.id ? { ...f, error: message } : f))\n );\n handleStatus(file.id, FileStatus.ERROR);\n return false;\n }\n return true;\n };\n\n useInterval(\n async () => {\n let pollResultedInUpdate = false;\n let allComplete = true;\n console.log('Checking status');\n console.log(files.length);\n for (const file of files) {\n // if the file is uploading, skip polling but not count it as complete\n allComplete = allComplete && file.status !== FileStatus.UPLOADING;\n // processing not started yet / already done, skip\n if (\n file.datasetId === undefined ||\n file.status === FileStatus.COMPLETE\n ) {\n continue;\n }\n const [\n step,\n progress,\n currentTimeseries = undefined,\n totalTimeseries = undefined,\n ] = await getUploadProcessingProgress(file.datasetId);\n console.log(step, progress, currentTimeseries);\n if (\n step !== file.processingStep ||\n file.processedTimeseries[0] !== currentTimeseries\n ) {\n pollResultedInUpdate = true;\n if (progress === 100) {\n handleStatus(file.id, FileStatus.COMPLETE);\n }\n setFiles((prevFiles) =>\n prevFiles.map((f) =>\n f.id === file.id\n ? {\n ...f,\n processingStep: step,\n processedTimeseries: [currentTimeseries, totalTimeseries],\n }\n : f\n )\n );\n allComplete = allComplete && progress === 100;\n }\n }\n console.log('Allcomplete', allComplete);\n if (allComplete) {\n setConsecutiveNoUpdateCount(null); // stop polling\n if (files.length > 0) {\n handleModalClose();\n }\n } else if (!pollResultedInUpdate) {\n setConsecutiveNoUpdateCount((prevCount) => prevCount + 1);\n } else {\n setConsecutiveNoUpdateCount(0);\n }\n },\n consecutiveNoUpdateCount === null\n ? null\n : Math.min(\n MAXIMUM_POLLING_INTERVAL,\n 1.5 ** consecutiveNoUpdateCount * 1000 + Math.random() * 100\n )\n );\n\n const handleUploadAll = async () => {\n setFiles((prevFiles) =>\n prevFiles.map((f) => ({\n ...f,\n config: { ...f.config, editingModeActive: false },\n }))\n );\n await Promise.all(\n files\n .filter((elm) => elm.status === FileStatus.CONFIGURATION)\n .map((elm) => handleUpload(elm))\n );\n };\n\n const handleModalClose = () => {\n const anyOngoing = files.find((f) => f.status === FileStatus.UPLOADING);\n if (anyOngoing) {\n setShowWarning(true);\n } else {\n handleConfirmClose();\n }\n };\n\n const handleConfirmClose = () => {\n const anyComplete = files.find((f) => f.status === FileStatus.COMPLETE);\n for (const file of files) {\n if (file.status === FileStatus.UPLOADING) {\n handleCancel(file);\n }\n }\n setCount(0);\n setFiles([]);\n if (anyComplete) {\n onCloseModal(true);\n } else {\n onCloseModal(false);\n }\n setShowWarning(false);\n };\n\n const handleCancelClose = () => {\n setShowWarning(false);\n };\n\n return (\n \n \n Create new dataset\n \n \n \n \n
\n Ongoing uploads will be cancelled if you close the menu! Are you\n sure?\n
\n \n \n \n \n
\n
\n
\n \n {files ? (\n
\n {files.map((f, idx) =>\n !f.config || !f.config.editingModeActive ? (\n \n
\n \n {f.name}\n
\n \n {f.status === FileStatus.ERROR\n ? `Error: ${f.error}`\n : `${f.status} ${\n f.status === FileStatus.PROCESSING\n ? f.processedTimeseries[0]\n ? `: ${f.processingStep} - Timeseries Processed: ${f.processedTimeseries[0]}/${f.processedTimeseries[1]} `\n : `: ${f.processingStep} `\n : ''\n } ${f.progress.toFixed(2)}%`}\n \n
\n {f.status === FileStatus.COMPLETE && (\n handleDelete(f.id)}\n >\n \n \n )}\n {f.status === FileStatus.CONFIGURATION && (\n
\n \n handleDelete(f.id)}\n >\n \n \n
\n )}\n {f.status === FileStatus.UPLOADING && (\n \n handleCancel(f)}\n />\n \n )}\n {f.status === FileStatus.CANCELLED ||\n (f.status === FileStatus.ERROR && (\n handleDelete(f.id)}\n >\n \n \n ))}\n {f.status === FileStatus.PROCESSING && (\n \n )}\n
\n
\n ) : (\n \n )\n )}\n \n ) : null}\n
\n \n
\n {' '}\n \n Click here\n {' '}\n to download an example CSV file.\n
\n f.status === FileStatus.CONFIGURATION)}\n onClick={handleUploadAll}\n >\n Upload All\n \n
\n
\n );\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"cssModule\", \"disabled\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n active: PropTypes.bool,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n disabled: PropTypes.bool,\n tag: tagPropType\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar PaginationItem = function PaginationItem(props) {\n var active = props.active,\n className = props.className,\n cssModule = props.cssModule,\n disabled = props.disabled,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'page-item', {\n active: active,\n disabled: disabled\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nPaginationItem.propTypes = propTypes;\nPaginationItem.defaultProps = defaultProps;\nexport default PaginationItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"next\", \"previous\", \"first\", \"last\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n 'aria-label': PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n next: PropTypes.bool,\n previous: PropTypes.bool,\n first: PropTypes.bool,\n last: PropTypes.bool,\n tag: tagPropType\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar PaginationLink = function PaginationLink(props) {\n var className = props.className,\n cssModule = props.cssModule,\n next = props.next,\n previous = props.previous,\n first = props.first,\n last = props.last,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'page-link'), cssModule);\n var defaultAriaLabel;\n\n if (previous) {\n defaultAriaLabel = 'Previous';\n } else if (next) {\n defaultAriaLabel = 'Next';\n } else if (first) {\n defaultAriaLabel = 'First';\n } else if (last) {\n defaultAriaLabel = 'Last';\n }\n\n var ariaLabel = props['aria-label'] || defaultAriaLabel;\n var defaultCaret;\n\n if (previous) {\n defaultCaret = \"\\u2039\";\n } else if (next) {\n defaultCaret = \"\\u203A\";\n } else if (first) {\n defaultCaret = \"\\xAB\";\n } else if (last) {\n defaultCaret = \"\\xBB\";\n }\n\n var children = props.children;\n\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n if (!attributes.href && Tag === 'a') {\n Tag = 'button';\n }\n\n if (previous || next || first || last) {\n children = [/*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n key: \"caret\"\n }, children || defaultCaret), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\",\n key: \"sr\"\n }, ariaLabel)];\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n \"aria-label\": ariaLabel\n }), children);\n};\n\nPaginationLink.propTypes = propTypes;\nPaginationLink.defaultProps = defaultProps;\nexport default PaginationLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"listClassName\", \"cssModule\", \"size\", \"tag\", \"listTag\", \"aria-label\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n listClassName: PropTypes.string,\n cssModule: PropTypes.object,\n size: PropTypes.string,\n tag: tagPropType,\n listTag: tagPropType,\n 'aria-label': PropTypes.string\n};\nvar defaultProps = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination'\n};\n\nvar Pagination = function Pagination(props) {\n var _classNames;\n\n var className = props.className,\n listClassName = props.listClassName,\n cssModule = props.cssModule,\n size = props.size,\n Tag = props.tag,\n ListTag = props.listTag,\n label = props['aria-label'],\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className), cssModule);\n var listClasses = mapToCssModules(classNames(listClassName, 'pagination', (_classNames = {}, _classNames[\"pagination-\" + size] = !!size, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, {\n className: classes,\n \"aria-label\": label\n }, /*#__PURE__*/React.createElement(ListTag, _extends({}, attributes, {\n className: listClasses\n })));\n};\n\nPagination.propTypes = propTypes;\nPagination.defaultProps = defaultProps;\nexport default Pagination;","import React, { useEffect, useState } from 'react';\nimport { Pagination, PaginationItem, PaginationLink } from 'reactstrap';\nimport './PageSelection.css';\n\nconst PageSelection = ({\n pageSize,\n datasetCount,\n goToPage,\n goToNextPage,\n goToLastPage,\n currentPage,\n goToPreviousPage,\n goToFirstPage,\n}) => {\n const [numPages, setNumPages] = useState(0);\n //determines how many pages are shown in a row, before the shortended pagination is used\n const maxFullSize = 6;\n\n useEffect(() => {\n setNumPages(Math.ceil(datasetCount / pageSize));\n }, [datasetCount, pageSize]);\n\n const generateNumbersArray = (m, n) => {\n return Array.from({ length: n - m + 1 }, (_, index) => m + index);\n };\n\n const fullPagination = () => {\n return getPaginationItems(generateNumbersArray(0, numPages - 1));\n };\n\n const getPaginationItems = (numbersArray) => {\n return numbersArray.map((page, index) => {\n return (\n \n goToPage(page)}>\n {page + 1}\n \n \n );\n });\n };\n\n const getEllipsisItem = () => {\n return (\n \n ...\n \n );\n };\n\n //always show two previous and next items in addition to first and last item when size is larger than 10\n //prevents overflow of pagination bar when screen is not wide enough\n const shortenedPagination = () => {\n const items = [];\n if (numPages === 1) {\n items.push(getPaginationItems([0]));\n } else if (currentPage <= 2) {\n items.push(getPaginationItems(generateNumbersArray(0, 2)));\n items.push(getEllipsisItem());\n items.push(getPaginationItems([numPages - 1]));\n } else if (currentPage >= numPages - 3) {\n items.push(getPaginationItems([0]));\n items.push(getEllipsisItem());\n items.push(\n getPaginationItems(generateNumbersArray(numPages - 3, numPages - 1))\n );\n } else {\n items.push(getPaginationItems([0]));\n items.push(getEllipsisItem());\n items.push(\n getPaginationItems(\n generateNumbersArray(currentPage - 1, currentPage + 1)\n )\n );\n items.push(getEllipsisItem());\n items.push(getPaginationItems([numPages - 1]));\n }\n return items;\n };\n\n return (\n
\n \n \n \n \n \n \n \n {numPages > maxFullSize ? shortenedPagination() : fullPagination()}\n \n \n \n \n \n \n \n
\n );\n};\n\nexport default PageSelection;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"inline\", \"color\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n inline: PropTypes.bool,\n tag: tagPropType,\n color: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'small',\n color: 'muted'\n};\n\nvar FormText = function FormText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n inline = props.inline,\n color = props.color,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, !inline ? 'form-text' : false, color ? \"text-\" + color : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nFormText.propTypes = propTypes;\nFormText.defaultProps = defaultProps;\nexport default FormText;","import React, { useState } from 'react';\nimport { Form, FormGroup, FormText, Input, Col, Row } from 'reactstrap';\n\nconst PageSizeInput = ({ pageSize, setPageSize }) => {\n const [error, setError] = useState('');\n const [value, setValue] = useState(pageSize);\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n const inputValue = e.target.value;\n //only numeric\n const numericValue = inputValue.replace(/[^0-9]/g, '');\n setValue(numericValue);\n if (numericValue.length < 1 || numericValue < 5) {\n setError('Please choose a size >= 5.');\n } else {\n setPageSize(numericValue);\n setError('');\n }\n setPageSize(numericValue);\n }\n };\n\n const handleInputChange = (e) => {\n setValue(e.target.value);\n };\n\n return (\n
\n \n \n {error && {error}}\n \n
\n );\n};\n\nexport default PageSizeInput;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"flush\", \"horizontal\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n flush: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n horizontal: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'ul',\n horizontal: false\n};\n\nvar getHorizontalClass = function getHorizontalClass(horizontal) {\n if (horizontal === false) {\n return false;\n } else if (horizontal === true || horizontal === \"xs\") {\n return \"list-group-horizontal\";\n }\n\n return \"list-group-horizontal-\" + horizontal;\n};\n\nvar ListGroup = function ListGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n flush = props.flush,\n horizontal = props.horizontal,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'list-group', // list-group-horizontal cannot currently be mixed with list-group-flush\n // we only try to apply horizontal classes if flush is false\n flush ? 'list-group-flush' : getHorizontalClass(horizontal)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nListGroup.propTypes = propTypes;\nListGroup.defaultProps = defaultProps;\nexport default ListGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"active\", \"disabled\", \"action\", \"color\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n color: PropTypes.string,\n action: PropTypes.bool,\n className: PropTypes.any,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar handleDisabledOnClick = function handleDisabledOnClick(e) {\n e.preventDefault();\n};\n\nvar ListGroupItem = function ListGroupItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n active = props.active,\n disabled = props.disabled,\n action = props.action,\n color = props.color,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, active ? 'active' : false, disabled ? 'disabled' : false, action ? 'list-group-item-action' : false, color ? \"list-group-item-\" + color : false, 'list-group-item'), cssModule); // Prevent click event when disabled.\n\n if (disabled) {\n attributes.onClick = handleDisabledOnClick;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nListGroupItem.propTypes = propTypes;\nListGroupItem.defaultProps = defaultProps;\nexport default ListGroupItem;","import React, { useState, useEffect } from 'react';\nimport { ListGroup, ListGroupItem, Badge } from 'reactstrap';\nimport Checkbox from '../../../components/Common/Checkbox';\n\nconst LabelingSetsFilter = ({\n selectedFilter,\n selectedFilterParams,\n labelings,\n currentFilterParams,\n setCurrentFilterParams,\n}) => {\n const [targetLabelingIds, setTargetLabelingIds] = useState([]);\n const [targetLabelIds, setTargetLabelIds] = useState([]);\n\n useEffect(() => {\n if (selectedFilter && selectedFilter.value === 'labelings') {\n setTargetLabelIds(selectedFilterParams.target_label_ids);\n setTargetLabelingIds(selectedFilterParams.target_labeling_ids);\n } else {\n const _currentFilterParams = {};\n _currentFilterParams.target_label_ids = [];\n _currentFilterParams.target_labeling_ids = [];\n setCurrentFilterParams(_currentFilterParams);\n }\n return () => {};\n }, []);\n\n useEffect(() => {\n setCurrentFilterParams((prevParams) => ({\n ...prevParams,\n target_labeling_ids: targetLabelingIds,\n }));\n }, [targetLabelingIds]);\n\n useEffect(() => {\n setCurrentFilterParams((prevParams) => ({\n ...prevParams,\n target_label_ids: targetLabelIds,\n }));\n }, [targetLabelIds]);\n\n const onSelectLabel = (label) => {\n if (isSelectedLabel(label._id)) {\n setTargetLabelIds(targetLabelIds.filter((id) => id != label._id));\n } else {\n setTargetLabelIds([...targetLabelIds, label._id]);\n }\n };\n\n const onSelectLabelingSet = (labelingSet) => {\n if (isSelectedLabeling(labelingSet._id)) {\n const labelingIdToRemove = labelingSet._id;\n setTargetLabelingIds(\n targetLabelingIds.filter((id) => id !== labelingIdToRemove)\n );\n const labelIdsToRemove = [];\n labelingSet.labels.map((label) => {\n labelIdsToRemove.push(label._id);\n });\n setTargetLabelIds(\n targetLabelIds.filter((id) => !labelIdsToRemove.includes(id))\n );\n } else {\n setTargetLabelingIds([...targetLabelingIds, labelingSet._id]);\n const labelIdsToAdd = [];\n labelingSet.labels.map((label) => {\n labelIdsToAdd.push(label._id);\n });\n const labelIdsToAddFiltered = labelIdsToAdd.filter(\n (id) => !targetLabelIds.includes(id)\n );\n setTargetLabelIds([...targetLabelIds, ...labelIdsToAddFiltered]);\n }\n };\n\n const isSelectedLabeling = (labelingId) => {\n return targetLabelingIds.includes(labelingId);\n };\n\n const isSelectedLabel = (labelId) => {\n return targetLabelIds.includes(labelId);\n };\n\n const renderLabels = (labels) => {\n if (labels.length === 0) {\n return null;\n } else {\n return (\n
\n {labels.map((label, index) => {\n return (\n
\n onSelectLabel(label)}\n />\n \n {label.name !== '' ? label.name : 'Untitled'}{' '}\n \n
\n );\n })}\n
\n );\n }\n };\n\n return (\n
\n
\n {\n 'Select the labelings and/or labels of the datasets you want to display:\\n'\n }\n
\n
\n \n {labelings.map((labeling, index) => (\n \n
\n
\n onSelectLabelingSet(labeling)}\n >\n
\n {labeling.name}\n
\n
\n
{renderLabels(labeling.labels)}
\n
\n
\n ))}\n
\n
\n
\n );\n};\n\nexport default LabelingSetsFilter;\n","import React, { useState, useEffect } from 'react';\n\nconst EmptyDatasetFilter = () => {\n return
{'Display only datasets without time series.'}
;\n};\n\nexport default EmptyDatasetFilter;\n","import React, { useState, useEffect } from 'react';\nimport { Input, Button } from 'reactstrap';\nimport Checkbox from '../../../components/Common/Checkbox';\nconst TextSearchFilter = ({\n selectedFilter,\n selectedFilterParams,\n labelings,\n currentFilterParams,\n setCurrentFilterParams,\n}) => {\n const [userInput, setUserInput] = useState('');\n\n useEffect(() => {\n if (selectedFilter && selectedFilter.value === 'filterByName') {\n setUserInput(selectedFilterParams);\n } else {\n setCurrentFilterParams('');\n }\n return () => {};\n }, []);\n\n const handleInputChange = (e) => {\n setUserInput(e.target.value);\n setCurrentFilterParams(e.target.value);\n };\n\n return (\n
\n
{'Search for datasets via name:\\n'}
\n
\n \n
\n
\n );\n};\n\nexport default TextSearchFilter;\n","import React, { useState } from 'react';\nimport {\n Button,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from 'reactstrap';\nimport LabelingSetsFilter from './filters/LabelingSetsFilter';\nimport EmptyDatasetFilter from './filters/EmptyDatasetsFilter';\nimport TextSearchFilter from './filters/TextSearchFilter';\n\nconst FilterSelectionModal = ({\n filterModalOpen,\n setFilterModalOpen,\n applyFilter,\n selectedFilter,\n setSelectedFilter,\n selectedFilterParams,\n setSelectedFilterParams,\n labelings,\n removeFilter,\n}) => {\n const filtersDef = [\n { displayName: 'Empty Datasets', value: 'filterEmptyDatasets' },\n { displayName: 'Text Search', value: 'filterByName' },\n { displayName: 'Labeling Sets', value: 'labelings' },\n ];\n\n const [currentFilter, setCurrentFilter] = useState(\n selectedFilter === undefined ? filtersDef[0] : selectedFilter\n );\n const [currenFilterParams, setCurrentFilterParams] =\n useState(selectedFilterParams);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n const renderFilter = () => {\n switch (currentFilter.value) {\n case 'filterByName':\n return (\n \n );\n break;\n case 'filterEmptyDatasets':\n return ;\n break;\n case 'labelings':\n return (\n \n );\n break;\n default:\n return null;\n }\n };\n\n const applyAndClose = () => {\n applyFilter(currentFilter, currenFilterParams);\n setFilterModalOpen(false);\n };\n\n const toggleDropdown = () => {\n setDropdownOpen(!dropdownOpen);\n };\n\n const handleFilterSelect = (filter) => {\n setCurrentFilterParams(undefined);\n setCurrentFilter(filter);\n };\n\n const _removeFilter = () => {\n removeFilter();\n setFilterModalOpen(false);\n };\n\n const filterDropdown = () => {\n return (\n \n {currentFilter.displayName}\n \n {filtersDef.map((filter) => (\n handleFilterSelect(filter)}\n >\n {filter.displayName}\n \n ))}\n \n \n );\n };\n\n return (\n
\n \n Filter Selection\n \n
\n
{filterDropdown()}
\n
{renderFilter()}
\n
\n
\n \n {' '}\n {' '}\n setFilterModalOpen(false)}\n >\n Cancel\n \n \n
\n
\n );\n};\n\nexport default FilterSelectionModal;\n","import React, {\n useState,\n useEffect,\n useContext,\n useRef,\n createRef,\n} from 'react';\nimport {\n Container,\n Button,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from 'reactstrap';\nimport NotificationContext from '../../components/NotificationHandler/NotificationProvider';\nimport Loader from '../../modules/loader';\nimport { useHistory, useLocation } from 'react-router-dom';\n\nimport './index.css';\n\nimport {\n getDatasets,\n deleteDatasets,\n getDatasetsWithPagination,\n} from '../../services/ApiServices/DatasetServices';\nimport { subscribeLabelingsAndLabels } from '../../services/ApiServices/LabelingServices';\nimport DatasetTable from './DatasetTable';\nimport DataUpload from './DataUpload';\nimport { UploadDatasetModal } from '../../components/UploadDatasetModal/UploadDatasetModal';\nimport PageSelection from './PageSelection';\nimport PageSizeInput from './PageSizeInput';\nimport FilterSelectionModal from './FilterSelection';\nimport { filter } from 'jszip';\n\nconst ListPage = (props) => {\n const [modal, setModal] = useState(false);\n //underlying datasets which get sorted, but not filtered\n const [datasets, setDatasets] = useState(undefined);\n const [total_datasets, setTotalDatasets] = useState(0);\n const [selectedDatasets, setSelectedDatasets] = useState([]);\n const [ready, setReady] = useState(false);\n const [isCreateNewDatasetOpen, setIsCreateNewDatasetOpen] = useState(false);\n const [labelings, setLabelings] = useState(undefined);\n const [currentPage, setCurrentPage] = useState(0);\n const [pageSize, setPageSize] = useState(5);\n const [sortDropDownIsOpen, setSortDropdownIsOpen] = useState(false);\n const [selectedSorting, setSelectedSorting] = useState('alphaAsc'); //alphaAsc, alphaDesc, dateAsc, dateDesc\n const [selectedFilter, setSelectedFilter] = useState(undefined); //name and display value of filter\n const [selectedFilterParams, setSelectedFilterParams] = useState(undefined); // obj containing filter params\n const [filterModalOpen, setFilterModalOpen] = useState(false);\n const { registerProjectDownload } = useContext(NotificationContext);\n //needed to access newest state in key event handler\n const total_datasetsRef = useRef(total_datasets);\n const currentPageRef = useRef(currentPage);\n const pageSizeRef = useRef(pageSize);\n const selectedSortingRef = useRef(selectedSorting);\n const selectedFilterRef = useRef(selectedFilter);\n const selectedFilterParamsRef = useRef(selectedFilterParams);\n\n const location = useLocation();\n const history = useHistory();\n\n const toggleModal = () => {\n setModal(!modal);\n };\n\n const getFilteredDatasets = () => {\n //deselect selected datasets to not cause confusion with datasets, which aren't visible\n };\n\n const deleteSelectedDatasets = () => {\n deleteDatasets(selectedDatasets).then(() => {\n setModal(false);\n setSelectedDatasets([]);\n setDatasets(\n datasets.filter((dataset) => !selectedDatasets.includes(dataset['_id']))\n );\n });\n // resetDropdown().catch((err) => {\n // window.alert('Error deleting datasets');\n // setModal(false);\n // });\n };\n\n const deleteEntry = (datasetId) => {\n setSelectedDatasets([datasetId]);\n toggleModal();\n };\n\n const toggleCreateNewDatasetModal = () => {\n if (isCreateNewDatasetOpen) {\n Promise.all([getDatasets(), subscribeLabelingsAndLabels()])\n .then(([datasets, labelings]) => {\n onDatasetsChanged(datasets);\n setLabelings(labelings);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n setIsCreateNewDatasetOpen(!isCreateNewDatasetOpen);\n };\n\n const selectAllEmpty = () => {\n setSelectedDatasets(\n datasets\n .filter((elm) =>\n elm.timeSeries\n .map((x) => x.length)\n .every((y) => y === 0 || y === null)\n )\n .map((elm) => elm._id)\n );\n };\n\n const selectAll = () => {\n setSelectedDatasets(datasets.map((elm) => elm._id));\n };\n\n const deselectAll = () => {\n setSelectedDatasets([]);\n };\n\n const initURLSearchParams = () => {\n //TODO error handling\n let pageUpdate = currentPage;\n let pageSizeUpdate = pageSize;\n let sortUpdate = selectedSorting;\n const searchParams = new URLSearchParams(location.search);\n if (searchParams.has('page')) {\n pageUpdate = parseInt(searchParams.get('page')) - 1;\n } else {\n searchParams.set('page', currentPage + 1);\n }\n if (searchParams.has('page_size')) {\n pageSizeUpdate = parseInt(searchParams.get('page_size'));\n } else {\n searchParams.set('page_size', pageSize);\n }\n if (searchParams.has('sort')) {\n sortUpdate = searchParams.get('sort');\n } else {\n searchParams.set('sort', selectedSorting);\n }\n history.replace({ search: `?${searchParams.toString()}` });\n\n selectedSortingRef.current = sortUpdate;\n currentPageRef.current = pageUpdate;\n pageSizeRef.current = pageSizeUpdate;\n setCurrentPage(pageUpdate);\n setPageSize(pageSizeUpdate);\n setSelectedSorting(sortUpdate);\n return {\n pageUpdate: pageUpdate === 0 ? 1 : pageUpdate,\n pageSizeUpdate: pageSizeUpdate,\n sortUpdate: sortUpdate,\n };\n };\n\n const changeURLSearchParams = (currentPage, pageSize, sort) => {\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', currentPage + 1);\n searchParams.set('page_size', pageSize);\n searchParams.set('sort', sort);\n history.replace({ search: `?${searchParams.toString()}` });\n };\n\n const fetchDatasetets = (\n currentPage,\n pageSize,\n sort,\n selectedFilter,\n selectedFilterParams\n ) => {\n getDatasetsWithPagination(\n currentPage + 1,\n pageSize,\n sort,\n selectedFilter,\n selectedFilterParams\n ).then((data) => {\n onDatasetsChanged(data.datasets);\n total_datasetsRef.current = data.total_datasets;\n setTotalDatasets(data.total_datasets);\n changeURLSearchParams(currentPage, pageSize, sort);\n });\n };\n\n useEffect(() => {\n const pageInit = initURLSearchParams();\n Promise.all([\n getDatasetsWithPagination(\n pageInit.pageUpdate,\n pageInit.pageSizeUpdate,\n pageInit.sortUpdate\n ),\n subscribeLabelingsAndLabels().then((labelings) => {\n setLabelings(labelings);\n }),\n ])\n .then(([data, _]) => {\n onDatasetsChanged(data.datasets);\n total_datasetsRef.current = data.total_datasets;\n setTotalDatasets(data.total_datasets);\n })\n\n .catch((error) => {\n console.error(error);\n });\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n useEffect(() => {\n if (pageSizeRef.current !== pageSize && ready) {\n pageSizeRef.current = pageSize;\n currentPageRef.current = 0;\n setCurrentPage(0);\n fetchDatasetets(\n 0,\n pageSize,\n selectedSortingRef.current,\n selectedFilterRef.current,\n selectedFilterParamsRef.current\n );\n }\n }, [pageSize]);\n\n useEffect(() => {\n if (selectedSortingRef.current !== selectedSorting && ready) {\n selectedSortingRef.current = selectedSorting;\n fetchDatasetets(\n currentPageRef.current,\n pageSizeRef.current,\n selectedSorting,\n selectedFilterRef.current,\n selectedFilterParamsRef.current\n );\n }\n }, [selectedSorting]);\n\n useEffect(() => {\n if (currentPageRef.current !== currentPage && ready) {\n currentPageRef.current = currentPage;\n fetchDatasetets(\n currentPage,\n pageSizeRef.current,\n selectedSortingRef.current,\n selectedFilterRef.current,\n selectedFilterParamsRef.current\n );\n }\n }, [currentPage]);\n\n const handleKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft':\n console.log('left');\n goToPreviousPage();\n break;\n case 'ArrowRight':\n console.log('right');\n goToNextPage();\n break;\n default:\n break;\n }\n };\n\n const goToPage = (page) => {\n setCurrentPage(page);\n };\n\n const goToNextPage = () => {\n if (\n currentPageRef.current <\n Math.ceil(total_datasetsRef.current / pageSizeRef.current) - 1\n ) {\n setCurrentPage(currentPageRef.current + 1);\n }\n };\n\n const goToPreviousPage = () => {\n if (currentPageRef.current > 0) {\n setCurrentPage(currentPageRef.current - 1);\n }\n };\n\n const goToLastPage = () => {\n setCurrentPage(\n Math.ceil(total_datasetsRef.current / pageSizeRef.current) - 1\n );\n };\n\n const gotToFirstPage = () => {\n setCurrentPage(0);\n };\n\n const resetDropdown = () => {\n setSortDropdownIsOpen(false);\n };\n\n const onDatasetsChanged = async (datasets) => {\n const labelings = await subscribeLabelingsAndLabels();\n console.log(datasets);\n if (!datasets) return;\n setDatasets(datasets);\n setLabelings(labelings);\n setModal(false);\n setReady(true);\n setIsCreateNewDatasetOpen(false);\n setFilterModalOpen(false);\n resetDropdown();\n };\n\n const refreshList = () => {\n subscribeLabelingsAndLabels().then((labelings) => setLabelings(labelings));\n getDatasets().then((datasets) => setDatasets(datasets));\n resetDropdown();\n };\n\n const toggleCheck = (e, datasetId) => {\n const checked = selectedDatasets.includes(datasetId);\n if (!checked) {\n if (!selectedDatasets.includes(datasetId)) {\n setSelectedDatasets([...selectedDatasets, datasetId]);\n }\n } else {\n setSelectedDatasets(selectedDatasets.filter((id) => id !== datasetId));\n }\n };\n\n const downloadAllDatasets = async () => {\n registerProjectDownload();\n };\n\n if (!ready) {\n return ;\n }\n\n const applyFilter = (currentFilter, currentFilterParams) => {\n setSelectedFilter(currentFilter);\n setSelectedFilterParams(currentFilterParams);\n selectedFilterRef.current = currentFilter;\n selectedFilterParamsRef.current = currentFilterParams;\n setCurrentPage(0);\n fetchDatasetets(\n 0,\n pageSize,\n selectedSorting,\n currentFilter,\n currentFilterParams\n );\n };\n\n const removeFilter = () => {\n selectedFilterRef.current = undefined;\n selectedFilterParamsRef.current = undefined;\n setSelectedFilter(undefined);\n setSelectedFilterParams(undefined);\n fetchDatasetets(\n 0,\n pageSize,\n selectedSorting,\n selectedFilterRef.current,\n selectedFilterParamsRef.current\n );\n };\n\n return (\n
\n \n \n \n \n\n {datasets.length > 0 ? (\n
\n \n
\n \n
\n
\n ) : null}\n\n \n Delete Dataset\n \n Are you sure to delete the following datasets?\n {console.log(selectedDatasets)}\n {selectedDatasets.map((id) => {\n const dataset = datasets.find((elm) => elm._id === id);\n if (!dataset) {\n return;\n }\n return (\n \n
\n {dataset.name}\n
\n );\n })}\n
\n \n \n Yes\n {' '}\n \n \n
\n \n {filterModalOpen ? (\n \n ) : null}\n
\n );\n};\n\nexport default ListPage;\n","import { Button } from 'reactstrap';\nimport { hexToForegroundColor } from '../../services/ColorService';\n\nimport './LabelingPanel.css';\n\nconst LabelButtonView = ({\n labeling,\n selectedLabelTypeId,\n canEdit,\n handleLabelTypeClicked,\n}) => {\n return (\n
\n {labeling &&\n labeling.labels.map((label, index) => (\n handleLabelTypeClicked(e, label._id)}\n key={index}\n >\n {label.name} {'(' + (index + 1) + ')'}\n \n ))}\n
\n );\n};\n\nconst TimeDisplay = ({ from, to }) => {\n return (\n
\n \n
\n Selected Label\n
\n
\n
\n \n
\n {new Date(from).toUTCString().split(' ')[4]}\n
\n
\n \n
-
\n
\n \n
\n {new Date(to).toUTCString().split(' ')[4]}\n
\n
\n
\n
\n );\n};\n\nconst LabelingPanel = ({\n labeling,\n onSelectedLabelTypeIdChanged,\n hideLabels,\n selectedLabelTypeId,\n canEdit,\n onAddLabel,\n from,\n to,\n onDeleteSelectedLabel,\n selectedLabelId,\n}) => {\n const handleLabelTypeClicked = (e, id) => {\n e.preventDefault();\n onSelectedLabelTypeIdChanged(id);\n };\n\n console.log(selectedLabelTypeId);\n return (\n
\n
\n
\n {!hideLabels ? (\n
\n \n + Add Label\n \n \n
\n ) : (\n
\n )}\n
\n \n \n Delete\n \n
\n
\n
\n );\n};\n\nexport default LabelingPanel;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport { omit } from './utils';\nvar omitKeys = ['defaultOpen'];\n\nvar UncontrolledDropdown = /*#__PURE__*/function (_Component) {\n _inheritsLoose(UncontrolledDropdown, _Component);\n\n function UncontrolledDropdown(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n isOpen: props.defaultOpen || false\n };\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = UncontrolledDropdown.prototype;\n\n _proto.toggle = function toggle(e) {\n var _this2 = this;\n\n var isOpen = !this.state.isOpen;\n this.setState({\n isOpen: isOpen\n }, function () {\n if (_this2.props.onToggle) {\n _this2.props.onToggle(e, isOpen);\n }\n });\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n isOpen: this.state.isOpen,\n toggle: this.toggle\n }, omit(this.props, omitKeys)));\n };\n\n return UncontrolledDropdown;\n}(Component);\n\nexport { UncontrolledDropdown as default };\nUncontrolledDropdown.propTypes = _objectSpread({\n defaultOpen: PropTypes.bool,\n onToggle: PropTypes.func\n}, Dropdown.propTypes);","import defineProperty from \"./defineProperty.js\";\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}\nexport default function _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}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nexport { useStateManager as u };\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\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// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\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 // $FlowFixMe\n return document.styleSheets[i];\n }\n }\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 ? process.env.NODE_ENV === 'production' : 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 (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\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 if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\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","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","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 {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 { 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, COMMENT, 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 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};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\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 (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\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 document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\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(' '); // $FlowFixMe\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 if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : 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 if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\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","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","var isBrowser = \"object\" !== 'undefined';\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 {\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","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 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","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 hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\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\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\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 if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.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 = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\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 } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\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 if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\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 if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function 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 if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[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 if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\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 += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\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","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 isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\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\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\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\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\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 if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\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\n var render = 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 }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\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 if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\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\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\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, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.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-c39617d8.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 pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.3\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\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 } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\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 if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\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; // $FlowFixMe\n\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 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\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\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\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\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 if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\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 && process.env.NODE_ENV !== 'production') {\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 && process.env.NODE_ENV !== 'production') {\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\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, 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 }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\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}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n clearTimeout(timeoutId);\n io && io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle